Linux Crontab Kullanımı

1- Cronjobs Nedir?
Cron istenilen görevlerin belirli zaman araliklari ile arkaplanda yapilmasina izin veren bir UNIX
aracidir.

2- Crontab (Cron TABle) Nedir?

Çalistirilacak görevi ve görevin çalistirilacagi zamani barindiran dosyadir.

2.1- Crontab Sinirlamalari

Crontab’i kullanici adiniz usr/lib/cron/cron.allow dosyasinda varsa veya böyle bir dosya
bulunmuyorsa ve adiniz usr/lib/cron/cron.deny dosyasinda yoksa kullanabilirsiniz.

Tüm kullanicilarin Crontab’i kullanabilmesi için usr/lib/cron/cron.deny dosyasinin bulunmasi ve
bos olmasi gerekir. usr/lib/cron/cron.deny dosyasi bulunmuyorsa Crontab’i yalnizca Root kullanici
kullanabilir.

2.2- Crontab Komutlari

crontab -e Crontab dosyasi bulunuyorsa düzenlemenizi, bulunmuyorsa yaratmasinizi saglar.
crontab -l Crontab dosyasini gösterir
crontab -r Crontab dosyasini siler
crontab -v Crontab dosyasinin en son düzenlendigi tarihi gösterir

2.3- Crontab Dosyasi
Crontab Dizilimi:
Crontab dosyasi sirasi ile Dakika (0-59), Saat (0-23), Ayin Günü (1-31), Ay (1-12) ve Haftanin
Günü (0-6) (Pazar = 0) alanlarini ve çalistirilacak komutu barindirir. “*” (tirnaklar hariç)
kullanildigi alan için kullanilabilinecek tüm degerleri ifade eder. Bir alan için girilecek
birkaç
deger “,”(virgül) ile ayrilabilir.
* * * * * Çalistirilacak Komut
– – – – –
| | | | |
| | | | +—– haftanin günü (0 – 6) (Pazar=0)
| | | +——- ay (1 – 12)
| | +——— ayin günü (1 – 31)
| +———– saat (0 – 23)
+————- dakika (0 – 59)

2.4- Örnek Crontab Dosyasi

Hergün saat 18:30’da /tmp klasöründeki dosyalari silen crontab satiri asagidaki gibidir.

30 18 * * * rm /home/kullaniciadi/tmp/*

Asagida birkaç zamanlama örnegi ve çalistirilma zamanlari verilmistir.

dak saat gün/ay ay gün/hafta Çalistirilma Zaman
30 0 1 1,6,12 * Ocak, Haziran ve Aralik aylarinin birinci günü saat 00:30’da
0 20 * 10 1-5 — Ekim ayinin her Pazartesi ve Cumasi saat 20:00’de
0 0 1,10,15 * * — Her ayin 1’inde, 10’unda ve 15’inde gece yarisi (00:00)
5,10 0 10 * 1 — Pazartesileri ve her ayin 10. gününde saat 12:05 ve 12.10’da

2.5- Crontab Sabitleri

Cron, kullanici ev dizinindeki komutu kabuk yardimiyla çalistirir (/usr/bin/sh) ve tüm kabuklar
için
destekledigi bazi degerler vardir.
Bunlar;

HOME= Kullanici ev dizini
LOGNAME= Kullanici giris adi
PATH= /usr/bin:/usr/sbin:.
SHELL= /usr/bin/sh

2.6 Email Iptali

Cron, öntanimli olarak islemi gerçeklestirdiginde kullaniciya email gönderir.

Eger bunun gerekli olmadigini düsünüyorsaniz asagidaki kodu cron görev satirinin sonuna
eklemelisiniz.

>/dev/null 2>&1

örn: 30 18 * * * rm /home/kullaniciadi/tmp/* >/dev/null 2>&1

2.7- Log Dosyasi Olusturma
Cron’un yaptigi islemleri bir log dosyasinda tutmak isterseniz,

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

3- Cpanel’de Cronjobs
Cpanel altinda Cronjobs kisminda cronjob yaratmak için 2 farkli mod bulunmaktadir.

Orjinal boyutları : Genişlik:446 x Yükseklik:215

3.1- Standart Mod
Standart mod çogu yeni kullanici için daha uygundur. Bu seçenek gerekli ayarlarin formdan
seçilebilmesini sagladigindan islemin daha hizli ve basit yapilabilmesini saglar. Standart mod 12
saatlik biçemi kullanmakta böylece kullanicinin istedigi zamani seçmesini kolaylastirmaktadir.
(AM= 0-12, PM= 12-23)

3.1.1- Standart Mod ile Cronjob Ekleme

Orjinal boyutları : Genişlik:446 x Yükseklik:440
Standart modda kullanicidan islemin yapilacagi zamani seçmesi, rapor gönderilecek mail adresi ve
yapilacak islemi girmesi istenir.

Orjinal boyutları : Genişlik:517 x Yükseklik:34
Formun en üstündeki alana islem gerçeklestiginde ya da bir hata olustugunda rapor gelmesi
istenen
adres girilir.

Orjinal boyutları : Genişlik:294 x Yükseklik:34
Ikinci olarak yapilacak olan islemin girilmesi gerekir. Buraya tüm unix komutlari girilebilir.

Örn: Bir klasörün tüm içerigini silmek için :

rm home/kullaniciadi/tmp/*

komutu kullanilabilir. Bu komutta da oldugu gibi “*” karakteri (joker karakter) cron
tarafindan da desteklenmektedir. Bu komutda “*” /tmp klasöründeki tüm
dosyalari temsil ettiginden /tmp klasörünün tüm içerigi silinecektir.

Orjinal boyutları : Genişlik:89 x Yükseklik:86

Orjinal boyutları : Genişlik:152 x Yükseklik:155

Orjinal boyutları : Genişlik:118 x Yükseklik:87

Üçüncü olarak islemin yapilacagi tarihi seçilir.

Son olarak Kaydet (Save Crontab) diyerek islem tamamlanir.

3.2- Gelismis Mod (UNIX Tarzi) –Advanced (UNIX Style)–

Gelismis mod UNIX tarzi cronjob eklemeyi destekler.

Deneyimli kullanicilar için daha uygundur.

3.2.1- Gelismis Mod ile Cronjob Ekleme

Orjinal boyutları : Genişlik:448 x Yükseklik:271
Gelismis modda ilk alana rapor gelmesi istenen email adresi girilir. Ardindan çalistirilma
zamanini belirlemek için sirasi ile Dakika, Saat, Ayin günü, Ay ve Haftanin günü yazilir.
Son olarak “Command” kismina çalistirilmasi istenilen komut girilerek “Commit Changes”e
tiklanir.

4- Cronjob Hakkinda birkaç ipucu

a) Görevlerin çalistirilma zamanini belirlerken birden fazla deger virgül ile ayrilarak
yazilabilir.
Ayrica asagidaki kodlar da islemin 1, 2, 5, 10 ve 15 dakika, 1, 2, 4 ve 6 saat ara ile
çalistirilmasini
saglar.

Her dakika */1 Her saat */1
Iki dakikada */2 Iki saatte */2
Bes dakikada */5 Dört saatte */4
On dakikada */10 Alti saatte */6
Onbes dakikada */15

b) Cronjobsta UNIX komutlarinin disinda PHP ve MySQL komutlarini da kullanabilmek için gerekli
kodlarin yazili oldugu dosyanin GET methodu ile çagrilmasi yeterli olur.

Crontab Nedir Diyecek Olursanız basit Olarak istediğiniz bir dosyayı Belirlediğiniz süreler içerisinde çalıştırır Crontab İle ilgili daha Fazla Bilgiye Buradan ulaşabilirsiniz Burdan‘da Crontab için Komut oluşturabilirsiniz

Sunucuda çalıştırmak için crontab -e yazıp dosya İçine yapıştırın örnek verecek olursak

3 * * * * sh /klasor/calisacakdosya.sh

yukarıdaki Komut 3 dakikada bir sh /klasor/calisacakdosya.sh Çalıştıracaktır

Zaman Yönlendirmeli İşleri Çalıştırmak

[değiştir]

Crontab Nedir?

Linux altında /etc/crontab dosyasına yapacağınız bir ayarlama ile bir dosyayı veya bir betiği belirli bir zamanda veya zaman dilimlerinde kolayca çalıştırabilirsiniz. Bunun için aman, kullanıcı ve komut tanımlarını bu dosya içine koymanız yeterli.

Örnek:

#  Dakika  Saat  Gün  Ay  Haftalık    Kullanıcı  Komut
    17     *     *    *    *     root      /Nerde/bu/komut/veya/skript

[değiştir]

Seçenekler

Dakika

Burada dakikayı tanımlamanız yeterli (0 – 59 arasında).

Saat

Burada saat tanımlamanız gerekir (0 – 23 arasında).

Gün

Burada gün belirlemeniz gerekir.(0 – 31 arası).

Ay

Burada ay tanımlamanız gerekir (0 – 12 arası).

Haftalık

Burada haftanın günlerini tanımlayabilrisiniz. (0 – 7 arası, 0 ve 7 pazar gününe eşittir).

0 = Pazar

1 = Pazartesi

2 = Salı

3 = Çarşamba

4 = Perşembe

5 = Cuma

6 = Cumartesi

7 = Pazar

Kullanıcı

Burada kullanıcı tanımlanır. Çalıştırılan program/skript bu kullanıcı hakları ile çalışır.

Komut

Bu bölüme ise çalıştırılacak olan komutun ismini girmeniz gerekir . Eğer söz konusu olan bir betik ise, tam yolu ile tanımlamaya özen gösterin. Aksi takatirde çalışmayabilir.

Eğer bu bölümler (dakika, saat, gün, ay haftalık..) bir * şeklinde tanımlanırsa, bunun anlamı HER olarak yorumlarnır. Yani HER SAAT, HER GÜN, HER AY vb…Yani komut bu tanıma göre çalıştırılır.

[değiştir]

Özel durumlar

Bazı durumlarda n OPTION olarak kullanabilirsiniz, yani */n şeklinde olabilir.

Örnek:

# dakika   saat  Gün     Ay    Haftalık   Kullanıcı         Komut
  */10      *     *       *       *        erkan         /kısayol/script.sh

Yukardaki örnekteki gibi, HER 10 dakikada /kısayol/script.sh erkan kullanıcı hakları ile skript çalıştırılır.

Biraz karmaşık bir örnek:

 # dakika   saat  Gün     Ay    Haftalık   Kullanıcı         Komut
      0    */2    3       11         *    root         /kısayol/script.sh

Bu örnekte, her dakika (yani 0. dakika, aynı zamanda 60 dakika), her 2 saate, ayın 3.11 de, haftalık fark etmez ve /kısayol/script.sh dosyası root hakları ile çalıştırılır.
Örnekler:

# Hergün saat 22:00 da /public ve alt dizinlerini sil
0    22     *     *     *  pingu  rm -r /public/*
# Her cumartesi saat 22:00 de delpub programini calsitir
0    22     *     *     6   root  /root/bin/delpub
# Her 5 dakikada calistir....
*/5    *     *     *     *   root  <todo>
# Her 2 saate calistir
00   */2    *     *     *  root  /usr/local/bin/mail_poll