Linux ve Unix icin Crontab – CronJob – Zamanlanmis Gorev

Hızlı Crontab Dökümanı (zamanlanmış görev)

Linux  (Unix) ve Solaris sistemlerde Cronjob (zamanlanmış görev) oluşturmak 

Cron, zamanlanmış görevler hazırlayabileceğiniz ve bu görevlerin arka planda cron sihirbazı ile çalıştırabileceğiniz bir özelliktir. Cron jobs (zamanalanmış görevler) cron tab (cron tables yani cron tablosu) diye çeşitli söylemleri vardır. Bunlar aynı şeydir. Bu görevler, programları ve ne zaman çalışacakları ile ilgili verileri bir dosyada tutar.

1. Crontab Kısıtları

Crontab ‘ı /usr/lib/cron/cron.allow dosyasında kullanıcı adınız yazıyorsa kullanabilirsiniz. Eğer bu dosya yok ise, /usr/lib/cron/cron.deny dosyasında adınız yok ise kullanabilirsiniz. Eğer bu dosya da yoksa, sadece root kullanıcısı crontab özelliğini kullanabilir.Allow (izin) ve deny (engel) dosyaları, 1 satırda 1 kullanıcı adı olacak şekildedir.

2. Crontab komutları

export EDITOR=vi ;cron dosyasını hangi editörde açacağınızı böyle ayarlayabilirsiniz. Burada biz “vi” editörünü seçmişiz.

crontab -e    : Crontab dosyanızı düzenleyin, yoksa oluşturun.
crontab -l     : Crontab dosyasınızın içeriğini görüntüleyin.
crontab -r    : Crontab dosyanızı silin.
crontab -v   : Crontab dosyanızı en son ne zaman düzenlediğinizi görün. (Bu sadece nadir sistemlerde çalışır)

3. Crontab dosyası
Crontab yazım kuralları :
Bir crontab dosyası içinde 5 tane özel zaman anlamı içeren alandan oluşur. Bunlardan sonra da çalıştırılacak komutu yazarız.

*     *     *   *    *        çalıştırılacak komut
-     -     -   -    -
|     |     |   |    |
|     |     |   |    +----- haftanın günü (0 - 6) (Pazar=0)
|     |     |   +------- ay (1 - 12)
|     |     +--------- ayın günü (1 - 31)
|     +----------- saat (0 - 23)
+------------- dakika (0 - 59)

içinde * olan alanlar için geçerli tüm değerleri yazmışsınız gibi düşünebilirsiniz.
Alanların içinde * veya,  (1,2,3) gibi virgülle ayrılmış değerleri yazabilirsiniz.
Notlar
Bazı kullanımlar tüm işletim sistemlerinde geçerli olmadığından, bunları kullanmamak en doğrusu. Bu yüzden belirtmiyorum burada.

Haftanın günü ve ayın günü  kısımlarına bir şey yazdığınızda her ikisi de çalışır. Yani OR ile birleştirilmiş bir query gibidir.

4. Crontab Örnekleri
Crontab dosyasındaki bir satır aşağıdaki gibidir. Bu kod, hergün saat 18.30 da /home/user/tmp/ klasörünün içini temizler.

30     18     *     *     *         rm /home/user/tmp/*

Aşağıdaki tabloda da komut olmadan zamanlama ile ilgili bir kaç örnek bulabilirsiniz.

min hour day/month month day/week Execution time
30 0 1 1,6,12 * – Ocak haziran ve aralık aylarının 1. gününde saat 00.30 da çalışır.
0 20 * 10 1-5 – Ekim ayında haftanın her pazartesi ve Cuma günlerinde 20.00 de çalışır.
0 0 1,10,15 * * – her ayın 1 inde 10unda ve 15 inde saat (00.00’da )gece yarısı çalışır.
5,10 0 10 * 1 – Her ayın 10unda ve her pazartesi saat 00.05 ve 00.10 da çalışır.
:

5. Crontab Ortamı

cron komutları kullanıcının ana klasöründen shell ile çalıştırır. (/usr/bin/sh)
cron her shell için varsayılan bir ortam destekler. aşağıdakileri tanımlar.
HOME=/kullnici/klasoru
LOGNAME=kullanicinin_idsi
PATH=/usr/bin:/usr/sbin:.
SHELL=/usr/bin/sh

6. Email gönderimi iptal etmek

Varsayılan olarak cronjob işlemi yapınca mail atar. kapatmak istiyorsanız cronun en sonuna aşağıdaki kodu ekleyin.

>/dev/null 2>&1

7. Log dosyası üretmek
Crondan çıkan outputu bir log dosyasına atmak istiyorsanız da, aşağıdaki gibi >/log/dosya.log şeklinde outputu dosya.log un içine push ettirebilirsiniz.

30 18 * * * rm /home/user/tmp/* > /home/user/cronlogs/clean_tmp_dir.log

 

Bu yazıyı şuradaki  yazıdan çoğunluğunu çevirerek yazdım. Güzel anlatmış orada, türkçesi de olsun istedim. Umarım faydalı olur.