İ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¶
cron(8),
crontab(1).
İ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 <paul (at) vix.com> tarafından
yazılmıştır.
ÇEVİREN¶
Yalçın Kolukısa <yalcink01 (at) yahoo.com>, Kasım 2003