Cron ifadesi açıklayıcı
Bir cron ifadesini sade bir dille okuyun, her saat diliminde sonraki çalışmalarını görün ve standart biçimine getirin.
Kod örnekleri
Bu örnekleri kendi projenize kopyalayın. Her biri yalnızca dilin standart kütüphanesini kullanır, bu yüzden kurulacak bir şey yoktur.
const expand = (field, min, max) =>
field.split(',').flatMap((part) => {
const [range, step = '1'] = part.split('/')
const [from, to = from] = range === '*' ? [min, max] : range.split('-').map(Number)
return Array.from({ length: Math.floor((to - from) / Number(step)) + 1 }, (_, i) => from + i * Number(step))
})
function matches(expression, instant) {
const [minute, hour, dayOfMonth, month, dayOfWeek] = expression.split(' ')
const inMonth = expand(dayOfMonth, 1, 31).includes(instant.getUTCDate())
const inWeek = expand(dayOfWeek, 0, 7).some((day) => day % 7 === instant.getUTCDay())
const dayMatches =
!dayOfMonth.startsWith('*') && !dayOfWeek.startsWith('*') ? inMonth || inWeek : inMonth && inWeek
return (
expand(minute, 0, 59).includes(instant.getUTCMinutes()) &&
expand(hour, 0, 23).includes(instant.getUTCHours()) &&
expand(month, 1, 12).includes(instant.getUTCMonth() + 1) &&
dayMatches
)
}
console.log(matches('*/15 9-17 * * 1-5', new Date('2023-11-14T09:30:00Z')))Ne yapar
Bir cron ifadesini sade bir dille okuyun, herhangi bir saat diliminde sonraki çalışma zamanlarını görün ve standart biçimine getirin. Beş alanlı standart cron ile saniyeli Quartz veya Spring lehçesini işler. Her şey tarayıcınızda hesaplanır.
Nasıl kullanılır
- Bir ifade yazın veya yapıştırın, örneğin
*/15 9-17 * * MON-FRI.@dailyve@hourlygibi kısayollar anlaşılır. İmlecin bulunduğu alan vurgulanır ve altında açıklanır. - Lehçeyi seçin: Standart (beş alan) ya da Quartz / Spring (altı veya yedi alan, saniyeyle başlar).
- Zamanlamanın hangi saat diliminde okunacağını ve kaç sonraki çalışmanın listeleneceğini seçin.
- Giriş alanının üstündeki açıklamayı sözle okuyun; sonraki çalışma zamanları altında yer alır. Uyarılar, her cron’un anlamadığı sözdizimini gösterir.
- Başlangıç için Rastgele ya da bir zamanlama çipini kullanın veya satır başına bir ifadeyi denetlemek için Birden çok satır’a geçin.
Örnekler
@daily → 0 0 * * *
*/15 9-17 * * MON-FRI → Her 15 dakikada bir, 09:00 ile 17:59 arasında, pazartesiden cumaya
Her ayın ikinci pazartesisi öğlen için bir Quartz ifadesi:
0 0 12 ? * MON#2
Bilmekte fayda var
- Beş alan şunlardır: dakika, saat, ayın günü, ay ve haftanın günü.
- Standart cron pazarı 0 sayar. Quartz ve Spring pazarı 1 sayar ve ayın günü ya da haftanın günü alanlarından birinde
?ister. - Cron, üzerinde çalıştığı makinenin veya zamanlayıcının saatine göre çalışır; bu yüzden o saat dilimini, çoğu zaman UTC’yi seçin.
- Quartz’ın
L,Wve#ifadeleri (son gün, en yakın hafta içi günü, ayın n. hafta içi günü) desteklenir. - Okunamayan bir alan kırmızıya döner ve ileti onu adıyla belirtir.
- Hem ayın günü hem haftanın günü verildiğinde görev, ikisi birden değil, biri uyduğunda çalışır.
@reboot’un listelenecek bir zamanlaması yoktur; standart cron’da pazar için7ya da Quartz karakterleri?,L,Wve#işaretlenir.
Cron ifadesi nedir?
Cron ifadesi, bir işin ne zaman çalışacağını beş alanla söyler: dakika, saat, ayın günü, ay ve haftanın günü. * her değeri, */15 her 15'te bir, 1-5 bir aralığı, 1,15 bir listeyi gösterir. Quartz ve Spring başa bir saniye alanı, bazen sona bir yıl ekler ve L, W, # gibi ekstraları destekler.
Sık sorulan sorular
Çalışmalar hangi saat dilimini kullanır?
Sizin seçtiğinizi. Cron, üzerinde çalıştığı makinenin veya zamanlayıcının saatine göre çalışır; gerçek zamanları görmek için o dilimi, çoğu zaman UTC'yi seçin.
Standart ile Quartz arasındaki fark nedir?
Standart cron beş alanlıdır ve pazarı 0 sayar. Quartz ve Spring altı veya yedi alanlıdır, saniyeyle başlar, pazarı 1 sayar ve ayın günü ya da haftanın günü alanında bir ? ister.
Bu araç ifadelerimi bir yere gönderiyor mu?
Hayır. Açıklama ve çalışma zamanları tarayıcınızda hesaplanır. Yazdıklarınız sunucularımıza hiçbir zaman gönderilmez.