Linux at, toplu iş, atq ve atrm komutları
Unix benzeri işletim sistemlerinde, at, batch, atq ve atrm komutları, gelecekte belirli bir zamanda yürütülecek bir komut veya komutlar planlayabilir.
Bu sayfa at, batch, atq ve atrm’nin GNU/Linux sürümlerini kapsar.
Açıklama
at komutu, normalde çalıştırma izniniz olan belirli bir zamanda bir kez çalışacak şekilde bir komutu zamanlar. at komutu, basit bir hatırlatma mesajından karmaşık bir komut dosyasına kadar herhangi bir şey olabilir. Komut satırında at komutunu çalıştırarak ve seçenek olarak planlanan zamanı geçirerek başlarsınız. Daha sonra sizi, planlanan zamanda çalıştırmak için komutu (veya komut dizisini) yazabileceğiniz özel bir komut istemine yerleştirir. İşiniz bittiğinde, yeni bir satırda Control-D’ye basın, komutunuz kuyruğa alınacaktır.
Tipik bir komut dizisi şuna benzer (yazdığınız komutlar burada mavi kutuda veya aşağıda kalın harflerle gösterilir):
at 9:30 PM Tue
warning: commands will be executed using /bin/sh at> echo "It's 9:30 PM on Sunday." at> ^D job 1 at Sun Nov 16 09:30:00 2014
Komutu çalıştırdığımızda, yaptığımız ilk şey bize komutlarımızın hangi komut kabuğuyla çalıştığını söyleyen bir “uyarı” vermek oldu: bu durumda /bin/sh, Bourne Kabuğu. Bu kabuk, geleneksel standart Unix kabuğudur.
Daha sonra bizi at> istemine yerleştirir. Burada, bir metin dizisini yankılayan basit bir yankı komutu yazıyoruz. basıyoruz Girmek, ve yeni bir komut istemine yerleştiriliriz. Ardından Control-D’ye basarak komutlarımızla işimizin bittiğini söyleriz. Daha sonra bize işimizin 1 numaralı iş olduğunu ve önümüzdeki Salı çalışacağını söyler.
Belirttiğiniz komutun çıktısı size postalanır. Bu maili mail programı veya pine (veya alpine denilen modern versiyonu pine) gibi bir program ile okuyabilirsiniz. Eğer sizde yoksa bu programları indirebilir veya paket yöneticiniz ile kurabilirsiniz. Örneğin, APT paket yönetim sistemini kullanan Ubuntu’da, bunları özellikle apt-get komutunu kullanarak yükleyebilirsiniz: sudo apt-get install mail veya sudo apt-get install alpine.
Saat Belirtme
at zaman ve tarihin çok rahat bir temsilini kullanır. Hatta beklemeyeceğiniz bazı “yaygın olarak kullanılan” saatleri bile biliyor – örneğin “çay saatinin” geleneksel olarak 16:00’da olduğunu biliyor.
Bir komutu programlamak için at atabileceğiniz zaman örnekleri burada. Örneğin, geçerli saatin 18 Ekim 2014 Salı 10:00 AM olduğunu varsayalım. Aşağıdaki ifadeler aşağıdaki saatlere çevrilir:
ifade: | çevirecekti: |
---|---|
öğle vakti | 12:00 PM 18 Ekim 2014 |
gece yarısı | 12:00 AM 19 Ekim 2014 |
çay zamanı | 16:00 PM 18 Ekim 2014 |
yarın | 10:00 AM 19 Ekim 2014 |
yarın öğlen | 12:00 PM 19 Ekim 2014 |
gelecek hafta | 10:00 AM 25 Ekim 2014 |
gelecek pazartesi | 10:00 AM 24 Ekim 2014 |
Cuma | 10:00 21 Ekim 2014 |
KASIM | 10:00 AM 18 Kasım 2014 |
09:00 | 9:00 AM 19 Ekim 2014 |
14:30 | 2:30 PM 18 Ekim 2014 |
1430 | 2:30 PM 18 Ekim 2014 |
yarın 14:30 | 2:30 PM Ekim 19 2014 |
gelecek ay 14:30 | 14:30 18 Kasım 2014 |
14:30 Cum | 2:30 PM 21 Ekim 2014 |
2:30 PM 21/10 | 2:30 PM 21 Ekim 2014 |
21 Ekim 14:30 | 2:30 PM 21 Ekim 2014 |
14:30 21/10/2014 | 2:30 PM 21 Ekim 2014 |
14:30 21.10.14 | 2:30 PM 21 Ekim 2014 |
şimdi + 30 dakika | 10:30 AM 18 Ekim 2014 |
şimdi + 1 saat | 11:00 AM 18 Ekim 2014 |
şimdi + 2 gün | 10:00 AM 20 Ekim 2014 |
16:00 + 2 gün | 16:00 PM 20 Ekim 2014 |
şimdi + 3 hafta | 10:00 AM 8 Kasım 2014 |
şimdi + 4 ay | 10:00 AM 18 Şubat 2015 |
şimdi + 5 yıl | 10:00 AM Ekim 18 2019 |
Yani, komutu çalıştırırsanız:
at now + 10 years
Ardından at> komut isteminde bir komut girin, Girmektıklayın ve Control-D yazın, bundan on yıl sonra komutunuzun sonuçları size postayla gönderilir.
Komut satırında bir saat belirtmezseniz, aşağıdaki hata mesajını verir:
Garbled time
Kuyruğa hiçbir iş eklenmez. Bu nedenle, her zaman komut satırında zamanınızı belirtin.
Sıradaki durumunuzu görüntülemek için atq kullanma
Şu anda sıraya alınmış işlerinizi görüntülemek için atq programını kullanabilirsiniz. Sırayı görüntülemek için atq yazın.
atq
1 Fri Oct 22 09:48:00 2014 a hope
Bu bilgiler soldan sağa: iş numarası, tarih, saat, yıl, sıra ve kullanıcı adı.
atq programı, tüm kullanıcıların işlerini listelediği süper kullanıcı değilseniz, yalnızca size ait işleri listeler. Bu nedenle, sistemde şu anda sıraya alınmış tüm işleri listelemek için bu komutu yazın (süper kullanıcı ayrıcalıklarınız varsa):
sudo atq
İstendiğinde parolanızı yazın.
Sözdizimi
at [-V] [-q queue] [-f file] [-mMlv] timespec...
at [-V] [-q queue] [-f file] [-mMkv] [-t time]
at -c job [job...]
atq [-V] [-q queue]
at [-rd] job [job...]
atrm [-V] job [job...]
batch
at -b
Teknik Açıklama
at ve toplu okuma komutları standart girdiden veya daha sonra yürütülecek belirli bir dosyadan sh kullanılarak.
at belirli bir zamanda komutları yürütür.
atq, kullanıcı süper kullanıcı değilse, kullanıcının bekleyen işlerini listeler; bu durumda, herkesin işleri listelenir. Çıktı satırlarının formatı (her iş için bir tane) şöyledir: iş numarası, tarih, saat, yıl, kuyruk ve kullanıcı adı.
atrm, iş numaralarıyla tanımlanan işleri siler.
sistem yük seviyeleri izin verdiğinde toplu komutları yürütür; başka bir deyişle, yük ortalaması 1.5’in altına düştüğünde veya atd’nin çağrılmasında belirtilen değer.
At, POSIX.2 standardını genişleterek oldukça karmaşık zaman özelliklerine izin verir. Günün belirli bir saatinde bir işi çalıştırmak için SS:MM biçimindeki zamanları kabul eder. (O zaman zaten geçmişse, ertesi gün varsayılır.) Ayrıca gece yarısı, öğlen veya çay saati (16:00) belirtebilirsiniz ve sabah veya akşam koşmak için AM veya PM eklenmiş bir günün saati olabilir. akşam. Ayrıca isteğe bağlı bir yıl ile ay-adı gün formunda bir tarih vererek veya MMDD formunda bir tarih vererek işin hangi gün çalıştığını da söyleyebilirsiniz.[CC]YY, AA/GG/[CC]YY, GG.AA.[CC]YY veya [CC]YY-AA-GG. Bir tarihin belirtilmesi, günün saatinin belirtimini takip etmelidir. Ayrıca şimdi + sayım zaman birimleri gibi zaman birimleri verebilir, zaman birimlerinin dakika, saat, gün veya hafta olabileceği ve saatin sonuna bugün ekleyerek işi bugün çalıştırmasını ve işi yarın çalıştırmasını söyleyebilirsiniz. zamanı yarına ekleyerek.
Örneğin, bir işi bundan üç gün sonra 16:00’da çalıştırmak için 16:00 + 3 gün, bir işi 31 Temmuz 10:00’da, 31 Temmuz 10:00’da ve bir işi 1:00’de çalıştırmak için yaparsınız. yarın, yarın gece 1’de yaparsın.
Zaman belirtiminin tanımı /usr/share/doc/at/timespec içinde bulunur.
Hem at hem de toplu için komutlar, standart girdiden veya -f seçeneğiyle belirtilen dosyadan okunur ve yürütülür. Çalışma dizini, ortam (BASH_VERSINFO, DISPLAY, EUID, GROUPS, SHELLOPTS, TERM, UID ve _ değişkenleri hariç) ve umask, çağırma anından itibaren korunur.
at şu anda bir setuid programı olarak uygulandığından, diğer ortam değişkenleri de (örneğin, LD_LIBRARY_PATH veya LD_PRELOAD) dışa aktarılmaz. Bu gelecekte değişebilir. Geçici bir çözüm olarak, işinizde bu değişkenleri açıkça ayarlayın.
Bir su kabuğundan çalıştırılan bir at veya toplu komut, mevcut kullanıcı kimliğini koruyacaktır. Kullanıcıya standart hata ve varsa komutlardan standart çıktı gönderilir. Posta, /usr/sbin/sendmail komutu kullanılarak gönderilecektir. at bir su kabuğundan yürütülürse, oturum açma kabuğunun sahibi postayı alır.
Süper kullanıcı bu komutları her zaman kullanabilir. Diğer kullanıcılar için, at kullanım izni /etc/at.allow ve /etc/at.deny dosyaları tarafından belirlenir. Ayrıntılar için at.allow’a bakın.
Seçenekler
-V | Sürüm numarasını standart hataya yazdırır ve başarıyla çıkar. |
-q kuyruğu |
Belirtilen kuyruğu kullanır. Sıra ataması tek bir harften oluşur; geçerli kuyruk atamaları a’dan z’ye ve A’dan Z’ye değişir. a kuyruğu at için ve b kuyruğu toplu iş için varsayılandır. Daha yüksek harfli kuyruklar daha fazla nezaketle çalışır. “=” özel kuyruğu, şu anda çalışmakta olan işler için ayrılmıştır.
Bir iş, büyük harfle belirlenmiş bir kuyruğa gönderilirse, iş, iş anında toplu işlere gönderilmiş gibi işlem görür. Süreye ulaşıldığında, yük ortalamasına göre toplu işleme kuralları uygulanır. atq’ya belirli bir sıra verilirse, yalnızca o sırada bekleyen işleri gösterir. |
-m | Çıktı olmasa bile iş tamamlandığında kullanıcıya posta gönderin. |
-M | Kullanıcıya asla posta göndermeyin. Başka bir deyişle, komutu yürütün, ancak çıktısını kullanıcıya bildirmeyin. |
-f dosyası |
İşi standart girdi yerine dosyadan okur. |
-t zaman |
Biçimde verilen işi zamanında çalıştırın [[CC]YY]AADDhhmm[.ss]. |
-l | -l’de koşmak, atq’da koşmakla aynıdır; tüm işlerde sıraya alınanları görüntüler. |
-r | Atrm’yi çalıştırmakla aynı şey. Bir işi kuyruktan kaldırır. |
-NS | Ayrıca atrm için bir takma addır. |
-B | Toplu iş için bir takma addır. |
-v | İşi okumadan önce işin yürütüleceği zamanı gösterir. Gösterilen saatler “20 Şubat 14:50:00 1997” biçiminde olacaktır. |
-C | Komut satırında listelenen işleri standart çıktıya yönlendirir. |
Dosyalar
/var/spool/cron/atjobs
/var/spool/cron/atspool
/proc/loadavg
/var/run/utmp
/etc/at.allow
/etc/at.deny
Örnekler
at -m 01:35 < my-at-jobs.txt
‘my-at-jobs.txt’ dosyasında listelenen komutları 1:35’te çalıştırın. İşin tüm çıktıları, görevi çalıştıran kullanıcıya postalanır. Bu komut başarıyla girildiğinde, aşağıdaki örneğe benzer bir istem alırsınız:
commands will be executed using /bin/sh job 1 at Wed Dec 24 00:22:00 2014
at -l
Bu komut, zamanlanmış işlerin her birini aşağıdaki gibi bir biçimde listeler:
1 Wed Dec 24 00:22:00 2003
…bu, atq komutunu çalıştırmakla aynıdır.
at -r 1
1. işi siler. Bu komut, atrm 1 komutunu çalıştırmakla aynıdır.
atrm 23
İş 23’ü siler. Bu komut, komutu -r 23’te çalıştırmakla aynıdır.
İlgili komutlar
crontab — Sistemin düzenli aralıklarla çalışması için işlerin listesini görüntüleyin ve düzenleyin.