crontab dosyası yardımıyla sistem üzerinde olmadığınız zamanlarda
Linux'tan bazı belirli işleri yapmasını istemek mümkündür. Örneğin
gereksiz trafik sıkışıklığı yaratamak için akşam geç saatlerde sistemi
yedeklemek için evden İnternet'e bağlanmak yerine crontab ile bu işlemi
otomatikleştirmek mümkün olur.
Bir crontab dosyasında toplam 6 alan bulunur. Bunlardan ilk beşi
komutun ne zaman işleneceğini gösterirken son kısımda bu saatler içinde
çalıştırılacak olan komutu gösterir. Zamanı belirten sütunlardan ilki
dakikayı (0 ile 59 arası), ikincisi saati (0 ile 23 arası), üçüncüsü
günü (1-31 arası), dördüncüsü ayı (1-12 arası), son kısım ise haftanın
gününü (0 pazarı göstermek üzere 0-6 arası) verir. Yine crontab'ın güzel
özelliklerinden birisi de bu alanların her birisinde zaman aralıklarını
yazmaya izin vermesidir. Mesela haftanın üçüncü ve beşinci günleri arası,
saat 4 ve 9 arası gibi. Eğer bir zaman alanına * girilirse, bunun anlamı
"her zaman" olur. Örneğin saat yerine * konulması "her saat", ay yerine *
konulması "her ay" anlamına gelecektir.
Önce aşağıda yeralan küçük bir crontab dosyası incelenecek, ardından crontab
işlemine nasıl başlanılacağı kısaca anlatılacaktır.
Yukarıdaki örnekte birinci ve ikinci sayılar 06:40 saatini
gösteriyor. Diğer zaman kısımları * ile doldurulmuş olduklarından her
gün 06:40'ta updatedb isimli program çalışacaktır.
Komut yerine kullanılacak olan program ismi parametre alabilir. Bu
örnekteki crontab dosyası pazartesi günleri saat 1'de, /tmp dizinindeki
üç günden daha eski dosyaları siler.
0 1 * * mon find /tmp -atime 3 -exec rm -f {} \;
Bu örnekte kullanılan virgül, her ayın 9, 19 ve 29'unu gösterir. Aynı
alanda birden fazla sayı kullanacaksanız arada boşluk bırakmamaya
dikkat edin.
0 1 9,19,29 * * find /tmp -atime 3 -exec rm -rf {} \;
Ay isimlerinde ocak, şubat, mart, nisan, mayıs, haziran, temmuz,
ağustos, eylül, ekim, kasım, aralık için sırasıyla january, february,
march, april, may, june, july, august, september, october, november,
december kullanabilirsiniz. Benzer şekilde pazar, pazartesi, salı,
çarşamba, perşembe, cuma, cumartesi ve pazar yerine sunday, monday,
tuesday, wednesday, thursday, friday ve saturday kullanın. Aşağıdaki
crontab girdisi yardımıyla iki ayda bir çalıştırılan komutla önce teyp
başa alınıyor, ardından /home dizini bu teybe yedekleniyor:
0 2 1 */2 * mt -f /dev/rft0 rewind; tar -cf /dev/rft0 /home
*/2 ile belirtilen zaman dilimini ikiye bölebilirsiniz. 2 yerine uygun
herhangi bir tamsayı yazılabilir.
Bu girdileri bir crontab dosyasına nasıl yazacağız? Bunun için root
kullanıcısı olarak girin ve aşağıdaki satırları yazın:
Ekrana bilgisayar ilk kurulduğu anda ön tanımlı olarak girilen crontab
satırları gelecektir. Buraya yukarıda belirtilen yapıda istediğiniz
kadar crontab girdisi yapabilirsiniz. Eğer daha önceden VISUAL çevresel
değişkenini uygun bir editöre ayarlamamışsanız, vi altında çalışmanız
gerekecektir. Başka bir editörle çalışabilmek için bu değişkeni,
editörün patikasını gösterecek şekilde değiştirin. İleride de kısaca
bahsedilecek olan tin (haber grubu okuyucu yazılımı) de VISUAL değişkenine
göre metin editörünün patikasını ayarlayacaktır.
# export VISUAL=/usr/bin/pico
Crontab dosyasının normal olarak işletilmesinden crond sorumludur. Sistem
açılırken /etc/rc.d dizini içindeki dosyalardan bir tanesi crond
programını çalıştırır ve bu andan itibaren crontab -e komutuyla
yarattığınız dosyadaki emirler zamanı geldikçe yerine getirilir.