crontab - cron’u yöneten tablolar
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:
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.
- Uyarı:
- 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(8)’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(8) 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
Bilgi’ye 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.
- Bilgi:
- Komutun
çalıştırılacağı
gün iki alandan ayarlanabilir: ayın günü ve
haftanın günü. Her iki alan da 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.
# 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"
/etc/crontab Sistem crontab dosyası
cron(8),
crontab(1).
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).
Paul Vixie tarafından yazılmıştır.
© 2003 Yalçın Kolukısa
Bu çeviri özgür yazılımdır:
Yasaların izin verdiği ölçüde
HİÇBİR GARANTİ YOKTUR.
Lütfen, çeviri ile ilgili bildirimde bulunmak veya çeviri
yapmak için
https://github.com/TLBP/manpages-tr/issues adresinde
"New Issue" düğmesine tıklayıp yeni bir
konu açınız ve isteğinizi belirtiniz.