Cron Nedir?

Makale

Cron, Unix ve Linux işletim sistemlerine yerleşik zamanlamaya dayalı bir iş zamanlayıcısıdır. Herhangi bir manuel müdahale olmaksızın komutların veya betiklerin sabit zamanlarda, tarihlerde ya da aralıklarda otomatik olarak çalışmasını sağlar. İsim, Yunanca chronos (zaman) kelimesinden gelmektedir. Cron; yedekleme, log rotasyonu, rapor oluşturma ve e-posta gönderme gibi tekrarlayan sistem görevlerini otomatikleştirmek için standart araçtır.

Bir cron ifadesi oluşturmanız veya doğrulamanız mı gerekiyor?

Cron Builder'ı Aç →

Tarihçe

Orijinal cron, 1979 yılında Bell Labs'ta Ken Thompson tarafından Version 7 Unix'in bir parçası olarak yazıldı. Her dakika uyanan, bir iş tablosunu kontrol eden ve zamanlanmış olanları çalıştıran basit bir daemon'du. Paul Vixie tarafından 1987–1988 yıllarında yazılan Vixie Cron, çoğu Unix sisteminde standart uygulama olarak yerini aldı ve bugün hâlâ kullanılan tanıdık beş alanlı sözdizimini tanıttı. Vixie Cron (veya türevleri), çoğu Linux dağıtımında varsayılan cron'dur. Modern varyantlar arasında Anacron (sürekli çalışmayan sistemler için), Fcron ve systemd tabanlı sistemlerde alternatif olarak systemd zamanlayıcıları bulunmaktadır.

Cron Nasıl Çalışır?

Cron daemon'u (crond) arka planda sürekli çalışır. Her dakika crontab dosyalarını okur (kullanıcı başına bir tane, artı /etc/cron.d/ içindeki sistem genelindeki crontab'lar) ve zamanlanmış zamanı mevcut zamanla eşleşen tüm işleri çalıştırır. Her kullanıcı kendi crontab'ını crontab komutuyla yönetir.

Cron İfadesi Sözdizimi

Bir cron ifadesi, çalıştırılacak komutun önünde beş boşlukla ayrılmış alandan oluşur:

┌───────────── dakika (0–59)
│ ┌───────────── saat (0–23)
│ │ ┌───────────── ayın günü (1–31)
│ │ │ ┌───────────── ay (1–12)
│ │ │ │ ┌───────────── haftanın günü (0–7, 0 ve 7 = Pazar)
│ │ │ │ │
* * * * *  çalıştırılacak komut

Alan Değerleri

Yaygın Örnekler

# Her dakika
* * * * * /path/to/script.sh

# Her gün gece yarısı
0 0 * * * /path/to/backup.sh

# Her gün sabah 3:30'da
30 3 * * * /path/to/task.sh

# Her Pazartesi sabah 9:00'da
0 9 * * 1 /path/to/weekly-report.sh

# Her 5 dakikada bir
*/5 * * * * /path/to/check.sh

# Her saat başı (0. dakikada)
0 * * * * /path/to/hourly.sh

# Her ayın ilk günü gece yarısı
0 0 1 * * /path/to/monthly.sh

# Her hafta içi (Pzt–Cum) sabah 8:00'de
0 8 * * 1-5 /path/to/workday.sh

# Hafta içi sabah 9 ile 17 arasında her 15 dakikada bir
*/15 9-17 * * 1-5 /path/to/poll.sh

# Günde iki kez (gece yarısı ve öğlen)
0 0,12 * * * /path/to/twice-daily.sh

Standart ve Quartz Cron Formatı

Platforma bağlı olarak karşılaşacağınız iki yaygın cron formatı vardır:

Standart (Unix/Linux) Cron — 5 Alan

Unix/Linux üzerinde crontab tarafından kullanılan klasik format. En küçük birim dakika'dır.

# dakika saat ayın-günü ay haftanın-günü
  *       *    *             *     *

Quartz Cron — 6 veya 7 Alan

Quartz Scheduler (Java), Spring @Scheduled, AWS EventBridge ve birçok CI/CD aracı tarafından kullanılır. Başa ekstra bir saniye alanı eklenir ve sonuna isteğe bağlı bir yıl alanı eklenebilir.

# saniye dakika saat ayın-günü ay haftanın-günü [yıl]
  0      30     9    *             *     ?

Quartz ayrıca standart cron'da bulunmayan ekstra özel karakterler sunar:

Yan Yana Karşılaştırma

# Standart cron — her gün 09:30'da
30 9 * * *

# Quartz cron — her gün 09:30:00'da
0 30 9 * * ?

# Standart cron — her Pazartesi 08:00'de
0 8 * * 1

# Quartz cron — her Pazartesi 08:00:00'da
0 0 8 ? * MON

# Standart cron — her 5 dakikada bir
*/5 * * * *

# Quartz cron — her 5 dakikada bir
0 */5 * * * ?

# Yalnızca Quartz — her ayın son günü gece yarısı
0 0 0 L * ?

# Yalnızca Quartz — her ayın ilk Pazartesisi 09:00'da
0 0 9 ? * 2#1

Hangi Formatı Kullanmalı?

Özel Dizeler

Çoğu cron uygulaması, beş alanlı sözdizimine alternatif olarak kısayol dizelerini destekler:

Crontab Komutları

# Crontab'ı varsayılan editörde düzenle
crontab -e

# Mevcut crontab'ı listele
crontab -l

# Crontab'ı tamamen sil
crontab -r

# Başka bir kullanıcının crontab'ını düzenle (yalnızca root)
crontab -u username -e

Kullanım Alanları

Önemli Kurallar

Sıkça Sorulan Sorular

Cron nedir?

Cron, Unix ve Linux işletim sistemlerinde zamanlamaya dayalı bir iş zamanlayıcısıdır. Kullanıcıların komutları veya betikleri belirli zamanlarda, tarihlerde ya da aralıklarda otomatik olarak çalıştırmasını sağlar. İsim, Yunanca chronos (zaman) kelimesinden gelmektedir.

Cron job nedir?

Cron job, cron daemon'u kullanılarak belirli bir zamanda veya aralıkta otomatik olarak çalışacak şekilde zamanlanmış bir görevdir. Her cron job, crontab dosyasında bir cron ifadesi (5 zaman alanı) ve ardından çalıştırılacak komuttan oluşan bir satırdır.

Cron ifadesi nedir?

Cron ifadesi, bir zamanlama tanımlayan beş boşlukla ayrılmış alandan oluşan bir dizedir: dakika (0–59), saat (0–23), ayın günü (1–31), ay (1–12) ve haftanın günü (0–7). Her alan belirli değerleri, aralıkları (1-5), adım değerlerini (*/5) ve joker karakterleri (*) kabul eder.

Cron ifadesinde * ne anlama gelir?

Yıldız işareti (*), "her" anlamına gelir — o alan için geçerli olan her değerle eşleşir. * * * * * her dakika çalışır. 0 * * * * her saatin 0. dakikasında çalışır (yani her saat başı).

Cron ile crontab arasındaki fark nedir?

Cron, zamanlamaları okuyup işleri çalıştıran daemon'dur (arka plan servisi). Crontab (cron tablosu), zamanlanmış işlerin listesini saklayan yapılandırma dosyasıdır. Crontab'ınızı crontab -e ile düzenlersiniz; cron daemon'u her işi ne zaman çalıştıracağını öğrenmek için bunu okur.

Her 5 dakikada bir cron job nasıl çalıştırılır?

Adım sözdizimini kullanın: */5 * * * * /path/to/command. */5, "0, 5, 10, 15 … 55. dakikalarda" anlamına gelir. Benzer şekilde */10 her 10 dakikada bir, */15 ise her 15 dakikada bir anlamına gelir.

İlgili Makaleler

Kaynaklar