Crontab Guru
Boşlukla ayrılmış beş alan ya da @daily gibi bir kısayol.
Bir cron ifadesi yapıştırın ve ne yaptığının alan alan açıklamasını kendi dilinizde alın. Alan sırasını hatırlamanıza ya da aralıkları aramanıza gerek yok: guru beş alanın her birini (dakika, saat, ayın günü, ay ve hafta günü) tek tek ele alır ve ifadeyi soldan sağa okur. Bir crontab satırını dağıtmadan önce kontrol etmek ya da devraldığınız bir satırı açıklamak için kullanışlıdır.
Guru nasıl kullanılır
-
1
İfadeyi yapıştırın
Herhangi bir standart 5 alanlı cron ifadesini (örneğin `0 9 * * 1-5`) giriş alanına kopyalayın.
-
2
Dökümü okuyun
Araç önce zamanlamayı tek bir cümleyle özetler, ardından beş alanın tamamını ayrı ayrı açıklar: dakika, saat, ayın günü, ay ve hafta günü. Ay ve hafta günü numaraları Türkçe adlarıyla gösterilir.
-
3
Sonraki çalışmaları kontrol edin
Son adım, görevin çalışacağı sonraki beş zamanı listeler; bu zamanlar sunucunun saat dilimine göre değil, sizin kendi saat diliminize göre hesaplanır. Ayrıca zamanlama göründüğünden daha genişse ya da takvimde eşleşen hiçbir tarih yoksa sizi uyarır.
-
4
Dağıtmadan önce kontrol edin
Zamanlamanın istediğiniz şeyi yaptığından emin olmak için açıklamayı kullanın; ardından crontab'ınıza, CI yapılandırmanıza ya da Kubernetes manifestonuza koyun.
Alan kopya kâğıdı
┌───────────── dakika (0-59)
│ ┌─────────── saat (0-23)
│ │ ┌───────── ayın günü (1-31)
│ │ │ ┌─────── ay (1-12 ya da JAN-DEC)
│ │ │ │ ┌───── hafta günü (0-6 ya da SUN-SAT; Pazar = 0 ya da 7)
│ │ │ │ │
* * * * *
Cron ifadelerindeki operatörler
| Operatör | Anlamı | Örnek |
|---|---|---|
* |
Her değer | * * * * * |
, |
Değer listesi | 0,15,30,45 |
- |
Aralık | 9-17 |
/ |
Adım (başlangıç/adım) | */5, 0-30/5 |
L |
Son (ayın son günü ya da son hafta günü, Quartz) | L, 5L |
W |
En yakın hafta günü | 15W (Quartz) |
# |
Ayın n’inci hafta günü | 1#3 (Quartz) |
? |
Belirli değer yok | Yalnızca Quartz |
Okuma sırası önemlidir
0 */2 * * 1-5 soldan sağa şöyle okunur: dakika 0, her 2 saatte bir, ayın herhangi bir günü, herhangi bir ay, Pazartesiden Cumaya. İnsanlar bazen alışkanlıkla alanları sağdan sola okur ve kafaları karışır; her zaman dakikadan başlayın.
“Her X dakikada bir” tuzağı
*/10 * * * * 0, 10, 20, 30, 40, 50. dakikalarda tetiklenir, “iş ne zaman oluşturulduysa ondan itibaren her 10 dakikada bir” değil. Cron adımları her zaman alanın aralığının başından ölçer. Bir işi 12:03’te dağıtırsanız, ilk çalışma 12:10’da olur, 12:13’te değil.
Gerçekten “son çalışmadan N dakika sonra” gerektiren işler için kalıcı bir zamanlayıcılı bir scheduler kullanın (OnUnitActiveSec ile systemd zamanlayıcıları ya da saklanan bir son çalışma zaman damgasıyla uygulama düzeyinde zamanlama).
Bilinmeye değer cron tuzakları
- Ayın günü + hafta günü her ikisi de ayarlı: çoğu cron uygulaması bunu OR davranışı olarak ele alır, muhtemelen istediğiniz şey değil.
- 0 adımı:
*/0geçersizdir. - Aralık başa sarar: saatler için
22-2klasik cronda çalışmaz;22-23,0-2kullanın. - 30 Şubat:
0 0 30 2 *gibi bir zamanlama asla tetiklenmez. - DST belirsizliği: 2 ile 3 arasında zamanlanan işler DST geçiş günlerinde iki kez ya da sıfır kez tetiklenebilir.
Cron ve modern zamanlayıcılar
Unix cron hâlâ her yerde, ama kritik bir şey için muhtemelen şunları istersiniz:
- systemd zamanlayıcıları: kaçırılan çalışmaları yakalar, rastgele kaydırmaları destekler, birim dosyalarından okur.
- Kubernetes CronJob: bildirimsel, yeniden denemeler, 1.25+’ta saat dilimi farkında.
- Airflow / Prefect / Dagster: bağımlılıkları, yeniden denemeleri, geri doldurmaları, gözlemlenebilirliği olan işler için.
- GitHub Actions zamanlaması: 5 alanlı cron, yalnızca UTC, minimum 5 dakikalık aralık, en iyi çaba teslimi.
Cron, başlı başına harika bir biçimdir ama kaçırılmaması gereken işler için zayıf bir zamanlayıcıdır.
Sık Sorulan Sorular
Çünkü standart cronda hafta günü 0 Pazardır (7 de Pazardır, her iki geleneği destekler). Pazartesi 1’dir. Quartz hafta günlerini 1-7 numaralandırır, Pazar = 1; bu da lehçeler arasında geçiş yapanları sık tökezletir.
Klasik Unix cron sunucunun yerel saat diliminde çalışır, /etc/timezone ne diyorsa. Kubernetes CronJob, GitHub Actions ve çoğu bulut zamanlayıcısı varsayılan olarak UTC’de çalışır. Her zaman doğrulayın ve mümkünse DST sürprizlerinden kaçınmak için UTC kullanın.
Klasik cron bunu doğrudan ifade edemez. Geçici çözüm: her Pazartesi çalıştırın ve tarihi betiğin içinde kontrol edin: [ $(date +%d) -le 7 ] && ./job.sh. Quartz bunu 1#1 ile yerel olarak destekler.
Hayır. Her zamanlamanın kendi satırı gerekir. Ama birkaç zamanlamayı listelerle tek bir satırda birleştirebilirsiniz: 0 9,17 * * * sabah 9’da ve 17’de çalışır. Tek satır olarak ifade edilemeyen zamanlamalar için aynı komutu gösteren birden fazla satır ekleyin.
İlgili Araçlar
ASCII Tablosu Referansı
NUL, LF ve DEL dahil her kod için ondalık, onaltılık, sekizlik ve ikili değerlerle HTML sayısal karakter başvurusu gösterimini sunan tam ASCII tablosu.
HTML Karakter Referansı
HTML varlıklarının aranabilir listesi; adlandırılmış ve sayısal kodlarıyla birlikte özel karakter ve semboller için tek tıkla kopyalama.
Dosya Boyutu Dönüştürücü
Bayt, KB, MB, GB, TB ve ikili IEC birimleri (KiB, MiB, GiB, TiB) arasında, ondalık ve ikiliyi dilediğiniz gibi birleştirerek dönüşüm yapın.
JSON Minifier
API yanıtlarında ve gömülü yapılandırmalarda payload boyutunu küçültmek için boşlukları, satır sonlarını ve yorumları kaldırarak JSON'u küçültün.
Klavye kısayolları başvurusu
macOS, Windows ve Linux’ta VS Code, Chrome ve GNU Readline kullanan Bash için belgelenmiş varsayılan kısayolları arayın.
CSS Fiyat Tablosu Oluşturucu
HTML + CSS ile tek bir fiyat kartı oluşturun: paket adı, fiyat ve marka vurgu rengi. Kodu açılış sayfanıza kopyalayın.
Araç diğer dillerde mevcuttur
- Crontab Guru [ID]
- Crontab Guru [DE]
- Crontab Guru [PL]
- Crontab Guru [PT]
- Crontab Guru [SV]
- Crontab Guru [TH]
- Crontab Guru [ES]
- Crontab Guru [JA]
- Crontab Guru [KO]
- Crontab Guru [VI]
- خبير Crontab [AR]
- Crontab Guru [FR]
- Crontab Guru [NL]
- Crontab Guru [EN]
- Crontab Guru [IT]
- Crontab Guru [RU]
- Crontab Guru [ZH]