Crontab, kısaca zamanlanmış görevlerdir. Belirlediğimiz zaman süreçlerinde çalışmasını istediğimiz komut ya da scriptleri otomatik olarak çalışmasını sağlayan servistir.

Crontab aşağıdaki tabloda belirtilmiş olduğu gibi toplam 7 süreçten oluşur.

Alan Mana
1 Dakika (0-59)
2 Saat (2-24)
3 Gün (1-31)
4 Ay (1-12, Jan, Feb, …)
5 Haftanın günleri (0-6) 0=Sunday, 1=Monday …
or Sun, Mon, Tue, Wed, Thur, Fri
6 Komutu veya scripti çalıştırma hakkına sahip olan kullanıcı
7 Çalışacak komut ya da scriptler

Bir crontab dosyasında aşağıdaki gibi satır bulunur. Yukarıdaki tabloyu bakarak aşağıda ne yaptığımızı anlayabilirsiniz.

0 2 * * * root /home/murat/script.sh , dakika 0, saat 2, hergün, heray, haftanın hergünü, root kullanıcısı ve script.sh betik dosyası, Hergün saat 2:00 ‘da script.sh betiğinin çalışağını söylüyoruz.

# Dakika Saat Gün Ay Haftanın Gün Kullanıcı Script
0 8 * * Sun root /root/yedek.sh

root kullanıcı hakkı ile /root/yedek.sh dosyası her pazar günü saat 8:00 ‘da çalışacaktır.

Yukarıdaki satırın bulunduğu dosya /var/spool/cron dizini altındadır. Burada sadece root adı altında bir dosya bulunur(root kullanıcısı ile düzenliyorsak) ve bunu düzenleyerek crontab dosyamızı ayarlarız. Diğer bir yol ise benim en çok tercih etmiş olduğum crontab -e komutudur. Bu komutla direk /var/spool/cron/root dosyasını düzenlemiş oluyoruz.

crontab fonksiyonları

Kolsolda crontab –help yazarak kullanabileceğimiz fonksiyonları görebilirsiniz.

crontab -e : crontab dosyasını düzenler

crontab -l : crontab dosyasında bulunan zamanlanmış görevleri listeler

crontab -r : crontab dosyasını temizler.

Crontab ‘la zamanlanmış görevler yazmak zor geliyor ise /etc/ altında bulunan hazır cronları kullanabilirsiniz.

/etc/cron.hourly

/etc/cron.daily

/etc/cron.weekly

/etc/cron.mountly

Hazır zamanlanmış cronları kullanmak için yapmanız gereken, scriptinizi hazırlamak ve bu dizinlerin altına çalışma izniyle birlikte kopyalamaktır.

Crontab ‘ın ana konfigürasyon dosyası /etc/crontab altındadır. Burada cron ile ilgili mesajların hangi eposta adresine gideceğini, hazır zamanlanmış görevlerin hangi zamanda çalışacağı gibi ayarlara ulaşabilirsiniz.

/etc/crontab çıktısı,

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

Crontab ile ilgili örnekler

# Her saatte bir ram çıktısını /tmp/ram dosyasına yazıyor

0 * * * * /usr/bin/free > /tmp/ram

# 2:00, 3:00, 4:00 saatlerinde script calısıyor (2-4 gibi yazarsak aralık belirtmiş oluruz)

0 2-4 * * * /root/test.sh

# Her ayın 1 ve 15’de saat 6.30 ‘da script calısıyor

30 6 1,15 * * /root/yedek.sh

# Her 5 dk bir mrtg scripti calışıyor

*/5 * * * * /root/mrtg.sh

# Her cumartesi saat 11 ‘de disk.sh çalıştırılıyor

* 11 * * Sat /root/disk.sh

# Her 2 saatte bir script çalışıyor

* */2 * * * /root/test.sh

Sanırım uzun bir cron anlatımı oldu.Umarım anlatabilmiş ve yardımcı olabilmişimdir.

Sevgiyle Murat Uğur EMİNOĞLU