crontab
Önceki Dosya Biçimleri ve Dosya Dönüşümleri Sonraki
crontab(5) crontab(5)
İSİM
crontab — cron'u yöneten tablolar
AÇIKLAMA
Bir crontab dosyasında, cron(8) sürecinin hangi zamanda hangi komutu çalıştıracağını belirten açıklamalar bulunur. Her kullanıcı kendi crontab dosyasına sahip olabilir. Bu kullanıcılara ait crontab dosyalarındaki zamanlanmış komutlar, crontab dosyasının sahibi hangi kullanıcı ise onun adı altında çalıştırılır. Uucp ve News genellikle kendi crontab dosyalarına sahiptirler, bu sayede bir cron komutunun parçası olarak su(1) komutunu çalıştırma ihtiyacı ortadan kalkmış olur.
Boş satırlar, sekmeler ve ara boşluklar yok sayılırlar. `#' karakteri ile başlayan satırlar yorum satırlarıdır. Dosyanın işletilmesi sırasında sistem tarafından önemsenmezler. Unutmayın ki, cron komutları ve yorumlar aynı satırda olamazlar. Bir yorum satırının devamında, bir cron komutu yer alıyorsa, sistem burasını da yorum olarak kabul eder ve işleme sokmaz. Aynı şekilde; yorumlar da, ortam değişkeni ayarları biçiminde, aynı satırda yer alamazlar.
Geçerli bir crontab satırı, ya ortam değişkenidir, ya da bir cron komutudur. Bir ortam değişkeni şu şekilde olur:
isim = değer
Eşit işaretinin yanındaki boşluklar seçime bağlıdır. Değer içindeki sonraki boşluklar, isme atanan değerin bir parçası olarak kabul edileceklerdir. Değer dizgesi, önde veya arkada yer alan boşlukları korumak için, çift ya da tek tırnak içinde olabilir. Buradaki temel nokta çift tırnak ile başlarsanız çift tırnak ile bitirmeniz gerektiğidir. Aynı şekilde tek tırnak ile başlarsanız tek tırnak ile bitirmelisiniz.
Pek çok ortam değişkeni, cron(8) süreci tarafından düzenlenir. SHELL değişkeni, /bin/sh'ı işaret eder. LOGNAME ve HOME, crontab dosyasının sahibinin /etc/passwd dosyasındaki değerlerine göre ayarlanır. HOME ve SHELL ortam değişkenleri, crontab içindeki ayrıca belirtilerek önemsenmeyebilir ama LOGNAME önemsenir.
UYARI: BSD sistemlerde, LOGNAME değişkeni bazen USER olarak adlandırılabilir. Bu tür sistemlerde, USER değişkeni de ayarlanmalıdır.
LOGNAME, HOME ve SHELL'e ek olarak; cron(8), bu crontab dosyasındaki komutların çalışması sonucu e-posta göndermeyi gerektirecek bir durum ortaya çıkmışsa, MAILTO değişkenini de arar. Şayet MAILTO tanımlı ve içeriği boş değil ise, posta burada belirtilen kullanıcıya gönderilir. Şayet MAILTO belirtilmiş ama içeriği boş ise, (MAILTO="" gibi) e-posta gönderilmez. Diğer durumlarda, e-posta, crontab dosyasının sahibi olan kullanıcıya gönderilir. Bu seçenek, cron'u yüklerken postacı olarak /usr/lib/sendmail yerine /bin/mail kullanmaya karar verdiğiniz durumlarda oldukça faydalı olur -- /bin/mail sahte isme izin vermez ve UUCP genellikle onun e-postalarını okumaz.
Bir cron komutunun yapısı V7 standartı ile oldukça uyumludur. Her satır, sonunda bir komut olan, beş adet zaman ve tarih alanına sahiptir. Şayet bu bir sistem crontab dosyası ise kullanıcı adı da belirtilir. Komutlar cron(8) tarafından işletilir. Burada belirtilen bir komutun işletilmesi için: dakika, saat ve ay bölümünün gerçek zaman ile aynı olması ve haftanın günü ya da ayın günü bölümününden en az birisinin gerçek zaman ile aynı olması gerekir (açıklama için aşağıdaki NOT’a bakınız). Burada unutulmaması gereken bir nokta vardır: kayıp saatler diye adlandırabileceğimiz zaman (yaz saati, kış saati uygulamalarında geçişlerde yaşanan saat kaybı gibi) için ayarlanmış görevler asla çalışmayacaktır. Benzer şekilde, bir seferden daha fazla yaşanan saatler için ayarlanmış görevlerde iki kez çalıştırılacaktır (yaz saati kış saati değişimlerinde saatin geriye alınıp, iki kere aynı saat diliminin yaşanması).
cron(8), her dakika başı cron girişlerini gözden geçirir.
Zaman ve tarih alanları:
Alan adı            izin verilen değerler
--------            ---------------------
minute                 0-59  (dakika)
hour                   0-23  (saat)
day of month           1-31  (ayın günü)
month                  1-12  (veya ay isimleri)
day of week            0-7   (Pazar günü için 0, 7; isim kullanılabilir.)
Yıldız (*) ile işaretlenmiş bir alan baştan sona (=hepsi) anlamına gelir.
Sayı aralıkları belirtilebilir. Aralıklar, ‘-’ işareti ile ayrılmış iki sayıdan oluşur. Belirtilen bir aralığa başlangıç ve bitiş sayıları da dahildir. Örneğin; 8-11 saat aralığı: 8,9,10 ve 11 saatlerini kapsar.
Listeler kullanılabilir. Liste; virgül ile ayrılmış sayılar dizesidir. Örneğin: ‘‘1,2,5,9’’ ve ‘‘0-4,8-12’’.
Adım değerleri aralıklarla birlikte kullanılabilir. Bir aralıktan sonra ‘/<sayı>’ şeklinde ifade edilir. Buradaki sayı adımlama değeridir. Örneğin; “0-23/2” saat ifadesi, V7 standartında “0,2,4,6,8,10,12,14,16,18,20,22” değerlerini ifade etmektedir. Adımlama bir yıldızdan ‘*’sonra da yapılabilir. “*/2” nin anlamı; her iki saatte bir demektir.
month” ve “day of week” alan adları için isimler de kullanılabilir. Büyük/küçük harf ayrımı olmaksızın ingilizce ismin ilk üç harfini kullanabilirsiniz. İsim aralıkları ve isim listelerini kullanamazsınız.
6. alan (satırın geri kalanı kısmı) çalıştırılacak komutu belirtir. Satırsonu karakterine veya “%” işaretine kadar olan kısım, /bin/sh ya da crontab'ın SHELL ortam değişkenince tanımlanmış olan kabuk tarafından çalıştırılır. Yüzde işareti ‘%’, ‘\’ işareti ile öncelenmedikçe, satırsonu karakteri haline dönüşür ve ilk ‘%’ den sonraki tüm bilgi, standart girdiye komut olarak gönderilir.
Not - komutun çalıştırılacağı gün iki alandan ayarlanabilir: ayın günü ve haftanın günü. Her iki alanda belirli bir gün ile sınırlıysa (yani ‘*’ değilse, yani belirtilmiş bir gün varsa), gerçek zaman bu iki değerden biri ile eşleşince, komut çalıştırılır. Örneğin; ‘‘30 4 1,15 * 5’’ dizgesi bir komutu her ayın 1. ve 15. günleri saat 4:30’da, artı her Cuma çalıştırılır.
ÖRNEK CRON DOSYASI
# komutları çalıştırmak için /bin/sh kullanılsın,
# /etc/passwd'de belirtilen önemsizdir
SHELL=/bin/sh
# kimin crontab’ı olduğunu boşver, bütün çıktıları ‘paul’e postala
MAILTO=paul
#
# hergün gece yarısından sonra beş dakika çalıştır
5 0 * * *       $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
# her ayın ilk günü saat 14:15 de çalıştır -- çıktılar paul’e postalansın
15 14 1 * *     $HOME/bin/monthly
# hafta içi (Pazartesi-Cuma) hergün saat 22:00’da çalıştır ve Joe’yu kızdır
0 22 * * 1-5   mail -s "Saat 22:00" joe%Joe,%%Çocukların nerede?%
23 0-23/2 * * * echo "her gün 00:23, 02:23, 04:23 de çalışır"
5 4 * * sun     echo "her Pazar 4:05’de çalışır"
İLGİLİ DOSYALAR
/etc/crontab    Sistem crontab dosyası
İLGİLİ BELGELER
İLAVELER
Haftanın günlerini belirtirken; hem 0. gün, hem de 7. gün Pazar olarak kabul edilecektir. BSD ve ATT bu konuda anlaşamamışlar gibi görünüyor.
Listeler ve aralıklar aynı alan içinde birlikte olamazlar. “1-3,7-9" dizgesi ATT veya BSD cron’u tarafından reddedilecektir. cron komutu, bu dizge yerine “1-3” veya “7,8,9” şeklinde tanımlamaları kabul edecektir.
Aralıklar adımlama içerebilir. "1-9/2" , "1,3,5,7,9" ile aynı anlamdadır.
Ay ve haftanın günleri isim olarak belirtilebilir.
Ortam değişkenleri crontab içinden ayarlanabilir. BSD veya ATT’de alt süreçlere aktarılan ortam, /etc/rc içindekilerden birisidir.
Komut çıktısı; crontab'ın sahibine postalanabilir (BSD bunu beceremez), crontab'ın sahibinden başkasına postalanabilir (SysV bunu beceremez) veya bu özellik kapatılabilir ve kimseye posta gönderilmez (SysV bunu da yapamaz).
YAZAN
Paul Vixie tarafından yazılmıştır.
ÇEVİREN
Yalçın Kolukısa , Kasım 2003
4. Berkeley Dağıtımı24 Ocak 1994crontab(5)
Önceki Üst Ana Başlık Sonraki
Dosya Biçimleri ve Dosya Dönüşümleri Başlangıç fs
Bir Linux Kitaplığı Sayfası