CRONTAB(5) | Dosya Biçimleri ve Dosya Dönüşümleri | 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.
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.
Bilginize
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.
Ö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ı
İ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
© 2003 Yalçın Kolukısa
* Özgün Belgenin Lisans ve Telif Hakkı bilgileri: * * Copyright 1988,1990,1993,1994 by Paul Vixie * All rights reserved * * Distribute freely, except: don't remove my name from the source or * documentation (don't take credit for my work), mark your changes (don't * get me blamed for your possible bugs), don't alter or remove this * notice. May be sold if buildable source is provided to buyer. No * warrantee of any kind, express or implied, is included with this * software; use at your own risk, responsibility for damages (if any) to * anyone resulting from the use of this software rests entirely with the * user. * * Send bug reports, bug fixes, enhancements, requests, flames, etc., and * I'll try to keep a version up to date. I can be reached as follows: * Paul Vixie <paul@vix.com> uunet!decwrl!vixie!paul