Crontab nedir, nasıl kullanılır?

Yasemin Gürcan —  6 Ağustos 2014 — 3 Comments

Cron, Unix tabanlı işletim sistemlerinde zaman bazlı çalışan bir görev planlayıcısıdır (job scheduler). Sistem tarafında yaptırmak istediğimiz görevi belirlediğimiz zaman aralıklarında çalıştırır. /etc dizini altındaki crontab dosyası ise cronların çalışma zamanını ve görevlerini barındıran yapılandırma dosyasıdır. Windows’ taki karşılığı ise zamanlanmış görevlerdir.

Aşağıda crontab yapılandırma dosyasını görebilirsiniz.

Dosyanın içinde gördüğümüz /etc/cron.monthly aylık, /etc/cron.weekly haftalık, /etc/cron.daily günlük, /etc/cron.hourly her saat çalışan cron’ların bulunduğu dosyalardır.

Aşağıdaki gibi her bir dosyada  çalışan süreçleri görebilirsiniz. Ben sadece /etc/cron.daily dizini gösterdim. Diğerlerine de bulunduğu dizine giderek bakabilirsiniz. vim editörü ile herhangi birini açtığımızda içerisinde çalışan betiği(script) inceleyebilirsiniz.

Crontab komutunun kullanımı

crontab -e
Crontab dosyasını düzenler eğer dosya yoksa oluşturur. Dosyayı düzenlemek için vim ya da nano editörlerinden birini kullanabiliriz. Editörü değiştirmek isterseniz

export EDITOR=yeni_editör komutu ile değiştirebilirsiniz.

crontab -l
Cron içerisinde yapılan işleri listeler.
Komut çalıştığında benim sistemimdeki çıktı aşağıdaki gibidir.

crontab -r
Tüm crontab dosyasını siler.

Bir cronun yapısı aşağıdaki gibidir:

|    |    |   |   |____Haftanın günleri (0 – 6 Pazar=0)

|    |   |   |______Ay(1 -12)

|    |   |________Ayın günleri (1 – 31)

|    |__________Saat(0 – 23)

|_____________Dakika(0 – 59)

Özel Karakterler

Yıldız işareti (*):Yukarıdaki bir bölüm * ile tanımlanırsa yapılacak olan işin her gün, her ay, her saat vb. çalışacağını belirtir.

*  *  *  *  *     :Her dakika da bir kere  çalışır.

0  0  1  *  *   :Her ay  bir kere çalışır.

0  0  0  1  *  :Her yıl bir kere çalışır.

Bölme işareti(/): Tanımlanan alandaki kademeleri ifade eder. Dakika alanında tanımlanırsa */10 gibi her 10 dakikada bir çalış anlamına gelir.

*  */10  *  *  *  :Her 10 saatte bir çalışır.

Kısa Çizgi(-): Zaman aralığı belirlemek için kullanılır. Örneğin saat alanında 09-16 şeklinde tanımladığımızda  sabah saat 9’dan 16′ ya kadar çalışan bir cron oluştururuz.

0  09-16  *  *  *  :Her ay, ayın her günü 9’dan 16’ya kadar çalışır.

Virgül ( , ) : Bir alanda birkaç değer belirtmek için kullanılır. Örneğin; hafta bölümünde (1,3,5) gibi tanımlarsak pazartesi,çarşamba ve cuma günü çalışır.

0  20  *  10  2,4 : Ekim ayının her salı ve perşembe günü saat 20:00’de çalışır.

Veritabanının yedeğini alan bir uygulama yapalım.

Yukarıdaki örnek, okul isimli veritabanının yedeğini okul_yedek.dump dosyasına alan bir cron uygulamasıdır.

Ayrıca bu işlemi bir betik tanımlayarak da yapabiliriz. Aşağıdaki gibi oluşturduğumuz betiği ben  dump.sh olarak kaydettim. Betiğin sorunsuz çalışması için çalışma izni de vermeliyiz.

chmod +x dump.sh komutu ile dump.sh dosyasına çalışma iznini verdik.

crontab -e ile açtığımız dosyaya aşağıdaki gibi çalışacağı zamanı ve çalışacak olan betiğin yolunu yazarak kaydettik.

00:01 de /home/yasemin/ dizinindeki dump.sh  betik dosyası çalışır.Oluşan veritabanı yedek dosyası yedek.dump  olarak  /home/yasemin/Desktop/ dizininde yaratılır.

Böylece bir cron un nasıl çalıştığını, kullandığı parametreleri ve crontab ile betik çalıştırmayı öğrendik.

Kaynaklar:

http://en.wikipedia.org/wiki/Cron

http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

Yasemin Gürcan

Yasemin Gürcan

Posts

Süleyman Demirel Üniversitesi Bilgisayar Mühendisliği 3. sınıf öğrencisiyim. Markafoni'de IT stajyeri olarak çalışıyorum.PostgreSQL, Linux konularına yoğunlaştım. Teknik yazılar yazarak Kadın Yazılımcı'nın yaygınlaşmasına çalışıyorum.

3 responses to Crontab nedir, nasıl kullanılır?

  1. Kemalettin Yeşilkaya 6 Ağustos 2014 at 17:08

    Teşekkürler Yasemin, eline sağlık 🙂

  2. crontab da başka bir sunucuya yedek alamk için ne yapmak gerekir?

Yorum yapmak için