cron ve crontab
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
- crontab dosyanızı açın:
crontab -e - Örneğin şu satırı ekleyin: 30 2 * * *
/usr/local/bin/backup.sh>>/var/log/backup.log2>&1 - Kaydedin ve çıkın; cron değişikliği otomatik olarak algılar.
- İşleri listele:
crontab -l
Dikkat
crontab -rsormadan tüm crontab'ı siler.- Zamanlamadan önce komutu aynı kullanıcıyla elle test edin.
İlgili makaleler
- systemd unit'leri ve systemctlsystemd unit'inin ne olduğu, yaygın unit türleri ve systemctl ile servislerin nasıl başlatılacağı, durdurulacağı, etkinleştirileceği ve inceleneceği.
- logrotatelogrotate aracının ne iş yaptığı, /etc/logrotate.conf ve /etc/logrotate.d üzerindeki yapılandırmasının nasıl çalıştığı ve bir kuralın güvenli bir şekilde nasıl test edileceği.
- journalctl ve systemd günlüğüjournalctl ile günlüklerin nasıl okunacağı, günlüğün ne kadar alan kapladığının nasıl kontrol edileceği ve --vacuum seçenekleriyle güvenli bir şekilde nasıl küçültüleceği.
Kaynaklar
- crontab(5) man7.org
- crontab(5) (Debian) manpages.debian.org
- systemd.timer(5) man7.org
Son gözden geçirme: