CRON İfadesi

Aynı görevi tekrar tekrar gerçekleştirmek oldukça zor olabilir. Yapılacak işleri zamanlamak, kullanıcıların bir sanal makine veya herhangi bir Unix benzeri işletim sistemi üzerindeki görevleri otomatikleştirmesine olanak tanır. Bu, değerli zamandan tasarruf sağlayarak kullanıcıların diğer temel görevlere odaklanmasını sağlar.

Bir cron işi (cron job), gelecekte yürütülecek görevleri planlamak için kullanılan bir Linux komutudur. Bu komut normalde periyodik olarak yürütülen bir işi planlamak için kullanılır - örneğin, her sabah bir bildirim göndermek için. Doğaları gereği cron işleri, sunucular gibi 7/24 çalışan bilgisayarlar için harikadır.

Bir cron işi oluşturmak için önce cron’un sözdizimini (syntax) ve biçimlendirmesini anlamanız gerekir. Aksi takdirde, cron görevlerinin doğru şekilde ayarlanması mümkün olmayabilir.

# ┌───────────── dakika (0 - 59)
# │ ┌───────────── saat (0 - 23)
# │ │ ┌───────────── ayın günü (1 - 31)
# │ │ │ ┌───────────── ay (1 - 12)
# │ │ │ │ ┌───────────── haftanın günü (0 - 6) (Pazar'dan Cumartesi'ye;
# │ │ │ │ │                                 7 bazı sistemlerde Pazar olarak da kullanılır) 
# │ │ │ │ │
# │ │ │ │ │
# * * * * * <yürütülecek komut>

Crontab sözdizimi, aşağıdaki olası değerlere sahip beş alandan oluşur:

Alanlardan hiçbirini boş bırakmamalısınız.

Örneğin, her Cuma saat 17:37’de root/backup.sh betiğitini çalıştırmak için bir cron işi ayarlamak istiyorsanız, cron komutunuz şu şekilde tanımlanmalıdır:

37 17 * * 5 root/backup.sh

Yukarıdaki örnekte, 37 ve 17, 17:37’yi temsil eder. Ayın günü (Day of the month) ve Ay (Month) alanları için her iki yıldız da olası tüm değerleri belirtir. Bu, tarih veya ay ne olursa olsun görevin tekrarlanması gerektiği anlamına gelir. Son olarak, 5 Cuma gününü gösterir. Sayı kümesini daha sonra görevin konumu takip eder.

Cron sözdizimini manuel olarak yazmak konusunda emin değilseniz, komutunuz için istediğiniz saat ve tarih için doğru sayıları üretmek üzere Crontab Generator veya Crontab.guru gibi ücretsiz araçları kullanabilirsiniz.

Cron komutunuz için doğru zamanı ayarlamak için, cron iş operatörleri hakkında bilgi sahibi olmak önemlidir. Her alana hangi değerleri girmek istediğinizi belirtmenize olanak tanırlar. Tüm crontab dosyalarında uygun operatörleri kullanmanız gerekir.

NOT: Bir cron işi oluştururken tüm alanların doldurulması gerektiğini unutmayınız! Bir alan belirtmek istemiyorsanız, * (yıldız) simgesiyle doldurunuz.

Kullanıcının girilecek mantıksal sayı kümesini bulması gerekmeden cron işlerini zaman aralıklarında programlamak için özel dizgiler (strings) kullanılır. Bunları kullanmak için, bir @ ve ardından basit bir ifade yazarsınız. Standart olmayan önceden tanımlanmış zamanlama tanımları şu şekildedir:

Girdi Tanım Karşılığı
@yearly (veya @annually) 1 Ocak gece yarısı yılda bir kez çalıştır 0 0 1 1 *
@monthly Ayda bir kez, ayın ilk gününün gece yarısında çalıştır 0 0 1 * *
@weekly Pazar sabahı gece yarısı haftada bir kez çalıştır 0 0 * * 0
@daily (veya @midnight) Gece yarısı günde bir kez çalıştırın 0 0 * * *
@hourly Saat başında saatte bir çalıştır 0 * * * *
@reboot Başlangıçta çalıştır

Cron ifadelerini insan tarafından okunabilir açıklamalara dönüştüren bir .NET kitaplığı da kullanabilirsiniz.

NOT: * * * * * bir cron zamanlama ifadesi için joker karakteridir, yani cron işiniz haftanın her günü, her ayın her gününün her saatinin her dakikasında çalıştırılmalıdır.