İ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