Belirli Zamanlarda Komut İşletilmesi

Next: Bash Kabuğu Up: Linux Sistem Yönetimi Previous: Konsolda Türkçe Yazmak

# Belirli Zamanlarda Komut İşletilmesi

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.

    40 06 * * * updatedb

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 :

    # crontab -e

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 ekleyebilirsiniz. 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 şe kilde 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.

Next: Bash Kabuğu Up: Linux Sistem Yönetimi Previous: Konsolda Türkçe Yazmak