Cronjob linux sistemlerde bir programcığı belli aralıklarda sürekli çalıştırmamıza imkan tanıyan bir işlevdir. Cronjob sayesinde her 5 dakikada bir , saatte bir ,günün belli saatlerinde, haftanın belli saatlerinde vb. sekillerde zamanlama belirleyip istediğimiz bir komutun çalışmasını sağlayabiliriz. Mesela her gece saat 02:00 da sistemin veri tabanı yedeğini almasını sağlayacak bir programcık yazıp saati geldiğinde çalışmasını sağlaya biliriz. her saat başı sistem yükünü mail olarak bildirecek bir programcık yazabiliriz. Bunlar gibi daha bir çok tekrarlı iş cronjob ile kolaylıkla yapılabilir.
Kullanımı
Bir cronjob ayarlamak için konsolda “crontab -e” komutunu kullanıyoruz. “crontab -e” komutu çalıştırılırken aktif olan kullanıcı hangi kullanıcı ise yapılan değişiklikler sadece o kullanıcını oturumu açık olduğu zaman çalıştırılır. Örneğin: sametatbasch kullanıcısı ile crontab -e komutunu çalıştırdığımda yapacağım düzenlemeler sadece sametatabasch kullanıcısı aktif olduğu zaman çalıştırılır. Sistemin çalıştığı her an komutların çalışmasını istiyorsanız. root kullanıcısı ile değişiklik yapmalısınız. Root kullanıcısına direk erişiminiz yok ise sudo komutu ile bu işlemi yapabilirsiniz.
sudo crontab -e
komutunu çalıştırdığımızda cronjob listesi gelecektir. Herbir satır farklı bir komutu belirtir. Her satırda 5 tane zaman belirteci ve son olarak çalıştırılacak komut yazılır. Bu alanların her biri diğerinden boşluk ile ayrılır. Zaman belirteçleri sıra ile şunları ifade eder: dakika (0-59), saat (0-23, 0 = gece yarısı), gün (1-31), ay (1-12), haftanın günü (0-6, 0 = Pazar).
01 04 1 1 1 /usr/bin/somedirectory/somecommand
yukarıdaki satır her Ocak ayının ilk haftasının ilk gününde saate 04:01 de yani her Ocak ayının ilk pazartesi gününde /usr/bin/somedirectory/somecommand komutunu çalıştıracaktır.
01 04 * * * /usr/bin/somedirectory/somecommand
zaman belirteci olarak * işareti kullanırsanı o belirtecin tüm değerlerinde çalıştırılacağı anlamına gelir. Yukarıdaki örnekte her yılın her ayının her gününde saat 04:01 de yani hergün 04:01 de belirtilen komutu çalıştıracaktır.
Zaman belirteçlerinde virgül kullanarak birden fazla değer girişi yapabilirsiniz.
01,31 04,05 1-15 1,6 * /usr/bin/somedirectory/somecommand
bu crontab satırı her 1. ve 6. ayın 1. ve 15. günü saat 04:01, 04:31, 05:01, ve 05:31 de belirtilen komutu çalıştıracaktır.
Zaman belirteçlerinde bölme işlemini kullanarak da tanımlama yapabilirsiniz. Örneğin her 10 dakikada bir çalıştırılacak bir komut için :
*/10 * * * * /usr/bin/somedirectory/somecommand
bu kod aşağıdaki ile aynı işi görecektir.
*/10 * * * * /usr/bin/somedirectory/somecommand
Ayrıca zaman belirteçleri için bazı anahtar kelimeler de kullanabilirsiniz. Bunlar:
Anahtar Anlamı
@reboot başlangıçta bir kere çalıştırır.
@yearly Her yıl çalıştırılır, “0 0 1 1 *”.
@annually (@yearly ile aynı)
@monthly Ayda bir çalıştırılır, “0 0 1 * *”.
@weekly Haftada bir çalıştırılır, “0 0 * * 0”.
@daily Günde bir çalıştırılır, “0 0 * * *”.
@midnight (@daily ile aynı)
@hourly Saatte bir çalıştırılır, “0 * * * *”.
@reboot /path/to/execuable1
Crontab fonksiyonunu hiç kullanmadan saatlik, günlük, haftalık ve aylık işlemleri çalıştırmak için /etc/ dizininde bulunan cron.hourly/ cron.daily/ cron.weekly/ cron.monthly/ dizinlerine çalışrıtmak istediğiniz komut dosyasını ekleye bilirsiniz.
KDE masaüstü ortamında görsel arayüz kullanarak bu işlemleri yapmak için Sistem Ayarları -> Başlatma ve Kapatma -> Görev Zamanlayıcı menüsünü kullanabilirsiniz.