Merhabalar. Bu yazıda size bazı işlerin planlanmış zamanlarda düzenli olarak çalışmasını sağlayan CRON Expressions hakkında bilgi vereceğim.

CRON Expression’lar en fazla 7 parametre olacak şekilde yazılabilirler ve en temel gösterimleri * * * * * * * şeklindedir. Burada bulunan * ifadesi uygun tüm değerlerin kabulü anlamına gelmektedir. Şimdi bu 7 parametrenin sıra ile hangi değerlere karşılık geldiğine bakalım.

  1. Saniye : En solda yer alan bu parametre planlamış görevimizin hangi saniye ya da saniyelerde çalışmasını bildirmek içindir.
  2. Dakika : En solun bir sağında yer alan bu parametre planlamış görevimizin hangi dakika ya da dakikalarda çalışmasını bildirmek içindir.
  3. Saat : En solun 2 sağında yer alan bu parametre planlamış görevimizin hangi saat ya da saatlerde çalışmasını bildirmek içindir.
  4. Ayın Günü (Day Of Month) :En solun 3 sağında yer alan bu parametre planlamış görevimizin ayın hangi gün ya da günlerinde çalışmasını bildirmek içindir.
  5. Ay (Month) : En sağın 2 solunda yer alan bu parametre planlamış görevimizin hangi ay ya da aylarda çalışmasını bildirmek içindir.
  6. Haftanın Günü (Day of Week) : En sağın 1 solunda yer alan bu parametre planlamış görevimizin haftanın hangi gününde çalışmasını bildirmek içindir.
  7. Yıl (Year) : En sağda yer alan bu parametre planlamış görevimizin hangi yıl ya da yıllarda çalışmasını bildirmek içindir. Bu parametre optional yani isteğe bağlı bir parametredir. İsterseniz koyalabilir isterseniz de koymayabilirsiniz.

CRON Expression’da Kullanılabilecek Özel Karakterler

  1. Asterisk(*) : Uygun olan tüm değerleri kabul et manasına gelmektedir. Örneğin dakika alanına * koyduğunuzda diğer alanlara bağlı olmakla birlikte uygun olan tüm dakikalarda ilgili görevin çalışacağı anlamına gelir.
  2. Question Mark(?) : Eğer bir alan için bir değer belirtmek istemiyorsanız, boş bırakmak istiyorsanız ? karakterini kullanabilirsiniz ancak bu karakter sadece 2 alan için izinlidir. Onlar da Haftanın Günü (Day of Week) ve Ayın Günü (Day of Month) alanlarıdır.
  3. Hyphen(-) : Aralık belirtmek için kullanılan bir karakterdir. Örneğin saat alanında 3-5 ifadesi kullanılırsa saat 3’de başlayıp 5’de bitmesi manasına gelir.
  4. Comma(,) : Birden fazla parametre geçmek için kullanılan karakterdir. Örneğin Haftanın günü alanında MON, WED, FRI şeklinde kullanılırsa ilgili görevin Pazartesi, Çarşamba ve Cuma günlerinde çalışacağı anlamına gelir.
  5. Slah(/) : Arttırım için kullanılan karakterdir. Örneğin biz saniye alanında 0/15 şeklinde bir kullanım yapsak bu ifade 0. saniyede başla ve 15 saniye arttırarak çalış anlamına gelir. Bu durumda 0. ,15. ,30. ve 45. saniyelerde bu görev çalışacaktır.
  6. Last(L) : Son (Last) anlamına gelen karakterdir. Örneğin siz bu karakteri ayın günü alanında kullanırsanız ayın son günü çalışacak bir görev yazmış olursunuz. Ayın son günü alanında L-2 şeklinde bir ifade kullanırsanız ayın son gününden 2 gün önce çalışcak bir görev yazmış olursunuz. Burada hangi ay olduğu da önem teşkil ediyor. Örneğin Ocak ayı için 31 gün, Şubat ayı için 28 gün olarak hesap yapar. Bu durumda L-2 ifadesi Ocak ayı içinde 29. günde çalışacakken şubat ayı içerisinde 26. günde çalışacaktır.
  7. Week of Day(W) : Bu parametre ilgili görevin hafta içi bir günde çalışması için kullanılmaktadır. Örneğin siz ayın günü alanına 15W ifadesini yazarsanız planlanmış görevimiz ayın 15. gününe en yakın haftaiçi gününde çalışcaktır. Eğer ayın
  8. günü Cumartesiye denk geliyor ise görev bir önceki gün Cuma çalışacaktır. Eğer ayın 15. günü Pazar’a denk gelirse bu defa bir sonraki gün Pazartesi çalışacaktır. Eğer 15. gün Salı günü ise hafta içine denk geldiğinde görev o Salı günü çalıştırılacaktır.

Cron Expression İçin Örnekler

Her gün saat 14:00 ile 14:55 arasında ve 18:00 ile 18:55 arasında 5 dakikada bir çalışacak Cron Expression yazalım.

    0 0/5 14,18 * * * *

Pazartesi, Salı, Çarşamba, Perşembe ve Cuma günleri saat 10:15’de çalışacak Cron Expression yazalım:

	0 15 10 * * MON-FRI *

Her ayın 15. günü saat 10:15’de çalışacak Cron Expression yazalım:

	0 15 10 15 * ? * 

Yılın son günü Cuma günü ise yılın bitiminden 1 dakika önce çalışacak Cron Expression yazalım.

    0 59 23 31 12 5 *

Ocak, Mart, Mayıs, Temmuz, Eylül ve Kasım ayında her dakika çalışacak Cron Expression yazalım.

	* * * * 1,3,5,7,9,11 * * 

Bu yazıda anlatacaklarım da bu kadar arkadaşlar. Cron Expression sentaksındaki dizilimi görmüş olduk ve temel olarak nasıl Cron Expression yazabileceğimizi öğrenmiş olduk. Siz de isterseniz aklınıza gelen Cron Expression ifadelerinin yazımını yorum kısmında paylaşarak bu yazıyı okuyacak diğer arkadaşlara örnek Cron Expression’lar bırakabilirsiniz. Gelecek yazıda görüşmek üzere.

Görüşene kadar sağlıcakla kalın.

Selam ve Sevgilerimle