Rain WikiWindows · Linux · Android

cron ve crontab

HizmetÇoğu Linux dağıtımı

cron, komutları bir takvime göre çalıştıran klasik Unix artalan işlemidir (daemon). Her kullanıcının crontab -e ile düzenlenebilen ve her satırında komuttan önce beş zaman alanı (dakika, saat, ayın günü, ay, haftanın günü) bulunan bir crontab dosyası vardır. Sistem işleri /etc/crontab ve /etc/cron.d/ dizinlerinde bulunur.

1Zaman alanları

'30 2 * * *' her gün 02:30 anlamına gelir; '*/10 * * * *' her on dakikada bir; '0 9 * * 1' her Pazartesi 09:00. Haftanın günü olarak 0 ve 7 Pazarı ifade eder.

2Sistem dosyaları

/etc/cron.d/ ve /etc/crontab içindeki dosyalar, zaman ile komut arasında fazladan bir kullanıcı adı alanına sahiptir. /etc/cron.daily gibi dizinler günde bir kez çalıştırılan betikleri barındırır.

3Yaygın tuzaklar

cron minimal bir ortamda çalışır: tam yollar kullanın veya crontab içinde PATH tanımlayın. Çıktı sahibine postalanır veya kaybolur; bir günlük (log) dosyasına yönlendirin. % karakteri crontab satırlarında özel bir anlama sahiptir ve \% olarak kaçış karakteriyle kullanılmalıdır.

4systemd zamanlayıcıları

systemd dağıtımlarında .timer birimleri; günlük kaydı, rastgele gecikmeler ve kaçırılan çalıştırmaların telafisi (Persistent=true) ile bir alternatif sunar.

Günlük bir iş nasıl eklenir

  1. crontab dosyanızı açın: crontab -e
  2. Örneğin şu satırı ekleyin: 30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
  3. Kaydedin ve çıkın; cron değişikliği otomatik olarak algılar.
  4. İşleri listele: crontab -l

Dikkat

  • crontab -r sormadan tüm crontab'ı siler.
  • Zamanlamadan önce komutu aynı kullanıcıyla elle test edin.

Kaynaklar

  1. crontab(5) man7.org
  2. crontab(5) (Debian) manpages.debian.org
  3. systemd.timer(5) man7.org

Son gözden geçirme: