Cronjob Nedir? Nasıl Kullanılır?

Cron Job (Zamanlanmış Görev) ileri tarihli tek seferlik ya da tekrarlanır veya duruma göre değişkenlik gösterebilir zaman uyarlı komutlar uygulamak için yaygın bir şekilde kullanılan yöntemlerden biridir1. Sistem yedeği almaktan e-posta göndermeye, sertifika kurulumlarından herhangi bir servisi aktifleştirme/pasifleştirme, WordPress wp cron fonksiyonu2 ile postlarınızı planlama işlemlerine aklınıza gelebilecek birçok amaç için kullanılabilir3 4 5. Kullanım işlemleri çoğunlukla CPanel üzerinden planlanmaktadır. Ancak, bu yazı ve bir sonra Crontab yazısında komut satırı üzerinden nasıl düzenleyebileceğimizi anlatacak ve örneklendireceğim. Zaman planlaması şu şekilde belirtilmektedir. Belirli tekrarlar için (saatlik, günlük, haftalık, aylık) işlemler shell script olarak şu klasörler içerisine yerleştirilebilir.

  • Saatlik: /etc/cron.hourly
  • Günlük: /etc/cron.daily
  • Haftalık: /etc/cron.weekly
  • Aylık: /etc/cron.monthly

macOS için benzer dizin tanımlamaları periodic6 ya da iCal, launchd gibi alternatiflerle7 de farklı kapsamlarda8 kontrol edilebilmektedir. Ancak, daha spesifik işlemler gerçekleştirmek için komutları crontab üzerinden zaman ifadeleriyle birlikte oluşturmak gerekir.

* * * * * ( [dakika] [saat] [gün] [ay] [haftanın günü] )
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ │
│ │ │ │ └───── haftanın günü (0 – 6) ([0] pazar - [1] p.tesi - [2] salı - [3] çarş. - [4] perş. - [5] cuma - [6] c.tesi)
│ │ │ └────────── ay (1 – 12)
│ │ └─────────────── gün (1 – 31)
│ └──────────────────── saat (0 – 23)
└───────────────────────── dakika (0 – 59)

Örneğin, her gün saat 13.00’da bir görevin gerçekleştirilmesini istersek zaman ifademiz şu şekilde olacaktır.

0 13 * * *

Her 30 dakikada bir yinelecek işlemler için ise zaman ifadesini şu şekilde belirtebiliriz.

30 * * * *

Daha detaylı zaman ifadeleri için Cron Format sayfasını inceleyebilirsiniz9. Örneğin, * * * * * ile her 1 dakikada bir bilgisayarımızda terminal uygulamasının açılmasını görev olarak ekleyelim10.

env EDITOR=nano crontab -e

nano ile görev tanımlayacağımız sayfayı açıp aşağıdaki satırı ekleyelim.

* * * * * open -a Terminal

Satırı ekleyip dosyayı kaydettiğimizde crontab: installing new crontab geri bildirimini alacağız. Özetle bu satır her 1 dakikada bir Terminal isimli uygulamayı açacaktır. Eklediğimiz ve işlemde olan görevleri -l parametresiyle görüntüleyebiliriz.

crontab -l

Bir sonraki yazıda Cron Job tanımlamalarını Crontab komutu üzerinden nasıl daha detaylı tanımlayabileceğimiz ile ilgili örnekler paylaşacağım.