İçeriğe atla

Cron ifadesi söz dizimi

Cron ifadesi, bir şeyin ne zaman çalışacağını açıklayan beş alandır. Her alan biriminin hangi değerlerinin kabul edilebilir olduğunu söyler ve iş, tüm beşin aynı fikirde olduğu her dakikada çalışır. Bu bütün modeldir: süre yoktur, "her 90 dakikada" yoktur ve sonraki çalışma durumu hiçbir yerde tutulmaz.

Alanlar soldan sağa dakika, saat, ay günü, ay, haftanın günü olarak okunur. Alttaki örnekler insanların gerçekten ulaştıkları şeylerdir ve bu sayfa inşa edilmeden önce her biri kendi cron ayrıştırıcısından geçer.

Son bölüm cron gibi görünen ancak burada kabul edilmeyen söz dizimini listeler: Quartz ve Jenkins uzantıları ve saniyeli altı alan formu. Bunları tanımakça birkaç belge tutmak faydalıdır, çünkü kopyalanan ifade bu araçlardan birini kullanıyorsa basitçe başarısız olur.

Beş alan

7

Cron satırı boşluklarla ayrılmış beş alandan sonra komut içerir. Her alan bulunmalı; hiçbiri atlanamaz.

İfadeAralıkAnlamı
* * * * *min hod dom mes dowBeş alan sırasında: dakika, saat, ay günü, ay, haftanın günüBeş yıldız her günün her dakikası anlamına gelir — en gevşek ifade.
minute0-59Birinci alan
hour0-23İkinci alan, 24 saatlik saatte
day of month1-31Üçüncü alanBelirli bir ayda olmayan gün basitçe atlanır — 31 yılda yedi kez, on iki değil.
month1-12Dördüncü alan
day of week0-7Beşinci alan, Pazar ilkHem 0 hem 7 Pazar anlamına gelir, bu yüzden aralık altıya değil yediye gider.
0 5 13 * 5Her iki gün alanı kısıtlandığında, cron her birinde ateşler — her ikisinde değilBu 13. ve her cuma çalışır, bu yüzden "13. cuma" değildir. Bu cron'un herkesin şaşırdığı tek kuralıdır.

İşleçler

10

Aynı dört işleç her alanda çalışır; sadece kabul ettikleri sayılar aralığı değişir.

İfadeAralıkAnlamı
*Alanın izin verdiği her değer
1,15,30Bireysel değerlerin listesi
9-17Her iki uç dahil aralık
*/15Tüm alan genelinde her n'inci değerDakika alanında */15 :00, :15, :30 ve :45 anlamına gelir — şimdiden değil aralığın başından sayılır.
9-17/2Bir aralık içinde her n'inci değer
5/10Başlangıç noktasından alanın sonuna her n'inci değer
0,30 9-17 * * 1-5İşleçler herhangi bir alanda serbestçe birleşirYarımdan her saat, dokuz ile beş arası, Pazartesi'den Cuma'ya.
JAN-DEC1-12Ay adları, üç harf, büyük harf duyarlı değil
SUN-SAT0-6Gün adları, üç harf, büyük harf duyarlı değil
70Pazar, diğer yol yazılı

Kısayol makroları

7

Tüm ifadeyi temsil eden yedi ad. Bunlar alan gramerinin değil crontab dosya biçiminin bir kolaylığıdır, bu yüzden cron dizelerini okuyan bir planlayıcı mutlaka bunları kabul etmez.

İfadeAralıkAnlamı
@hourly0 * * * *Her saatin başında
@daily0 0 * * *Günde bir kez gece yarısında
@midnight0 0 * * *@daily ile aynı
@weekly0 0 * * 0Haftada bir kez, Pazar gece yarısında
@monthly0 0 1 * *Ayın birinci günü gece yarısında
@yearly0 0 1 1 *1 Ocak'ta gece yarısında
@annually0 0 1 1 *@yearly ile aynı

Çalışılmış örnekler

14

İfade mantıklı olmayı durdurduğunda sağdan sola okuyun: en kaba alan sağ tarafta ve daha ince olanların hangi günlerde değerlendirildiğine karar verir.

İfadeAralıkAnlamı
* * * * *Her dakika
*/5 * * * *Her beş dakika
0 * * * *Her saat, saat başında
0,30 * * * *Her yarım saat
0 3 * * *Her gün 03:00'te
0 9,17 * * *Günde iki kez, 09:00 ve 17:00'de
*/15 9-17 * * 1-5İş günleri çalışma saatleri sırasında her 15 dakikada bir
0 8 * * 1-5İş günleri 08:00'de
0 10 * * 6,0Cumartesi ve Pazar 10:00'de
30 7 * * MONPazartesi 07:30'da
0 0 1 * *Her ayın ilk gününde gece yarısında
0 0 28-31 * *Ayın son bölümündeki her günStandart cron "ayın son günü" bilmez. Bu dört kata kadar çalışır; yazılımcı tarih kontrolü yapan ve erken çıkan komut dosyasıdır.
0 0 1 1,4,7,10 *Her çeyrekte ilk gün gece yarısında
0 0 1 1 *Yılda bir kez, 1 Ocak'ın başında

Bu sitede kabul etmediğimiz uzantılar

6

Quartz, Jenkins ve bazı bulut zamanlamacılar bunları ekler. Birisi başkasının crontab'ında tanı diye listelenirler — bu sitedeki ayrıştırıcı her birini reddeder ve Linux ile gönderilen cron da.

İfadeAralıkAnlamı
?"Spesifik değer yok", diğerinin kısıtladığı gün alanında
LAyın son günü veya son verilen haftanın günü
15W15. en yakın iş günü
FRI#3Ayın üçüncü Cuma'sı
*/30 * * * * *Saniye için altıncı alan, ön taraftaBeş değil altı alan. Quartz ve birkaç dil düzeyi kütüphanesi bu formu kullanır; crontab dosyası kullanmaz.
@rebootMakine başlarken bir kez çalıştırCrontab'da gerçek ancak rozet değil — hesaplanacak sonraki çalışma yoktur, bu yüzden buradaki ayrıştırıcı reddeder.

FAQ

"13. cuma" işim neden her cuma çalıştı?
Çünkü ay günü ve haftanın günü alanları kısıtlandığında, cron bunları veya birbirlerine göre davranır ve aynı anda değil. 0 5 13 * 5 13. ve her cuma çalışır. Gerçek 13. cuma komut içinde tarih kontrolü gerektirir.
*/5 "şimdi beş dakikadan" demek midir?
Hayır. Adımlar o anda kurulduğunuzdan değil alanın başından sayılır, bu yüzden dakika alanında */5 :00, :05, :10 ve benzeri anlamına gelir — ifadenin yazıldığı zamandan bağımsız olarak.
Cron hangi saat dilimini kullanır?
Sistem saat dilimi, crontab başında CRON_TZ veya TZ ayarlanmamışsa. Bu yılda iki kez önemlidir: gün ışığından yararlanma saati değişikliğinin atladığı saat içinde planlanan bir iş çalışmaz ve tekrarlanan saat içinde bir iş iki kez çalışabilir.
Haftanın günü alanında 0, 7 ile aynı mıdır?
Evet, her ikisi de Pazar'dır. Klon vardır çünkü Pazartesi'den Pazar'a kapsayan 1-7 aralığı doğal olarak yazılabilir; 0-6 alan bunu bir aralıkta ifade edemez.
İfadeyi nerede test edebilirim?
Bu sitedeki cron ayrıştırıcısı ifadeyi alır ve sonraki çalışmaları düz dilde gösterir, tarayıcınızda yerel olarak. Yanındaki araç ters gider: zamanlamayı seç ve ifadeyi yazar.