it-swarm.asia

/ Etc / crontab’ın biçimini doğrulamanın bir yolu var mı?

/ Etc/crontab içinde zamanlanmış görevleri yapıştırmayı tercih ediyorum, böylece görevin hangi kullanıcı olarak çalıştığından bağımsız olarak ne zaman çalıştırılacağını bir bakışta görebiliyorum.

Tek sorun, crontab -e'den farklı olarak biçimin kayıtta doğrulanmadığıdır, böylece bir sokak karakteri sessizce tüm cronu kırabilir.

Kaydetmeden önce/sonra/etc/crontab biçimini doğrulamanın bir yolu var mı?

37
Ben K.

Bulduğum tek güvenilir yol günlüğü kontrol etmektir.

cron dakikada bir /etc/crontab kontrol eder ve yeniden yüklediğini veya bir hata bulduğunu belirten bir mesaj kaydeder.

Düzenledikten sonra şunu çalıştırın:

sleep 60; grep crontab /var/log/syslog | tail

Veya tam bir dakika beklemek için değil, sadece bir sonraki dakika + 5 saniyeye kadar:

sleep $(( 60 - $(date +%S) + 5 )) && grep cron /var/log/syslog | tail

Hatalı örnek çıktı:

Jan  9 19:10:57 r530a cron[107258]: Error: bad minute; while reading /etc/crontab
Jan  9 19:10:57 r530a cron[107258]: (*system*) ERROR (Syntax error, this crontab file will be ignored)

İyi çıktı:

Jan  9 19:19:01 r530a cron[107258]: (*system*) RELOAD (/etc/crontab)

Bu Debian 8'de. Diğer sistemlerde cron farklı bir dosyaya giriş yapabilir.

(Systemd's journalctl -u cron Kullanarak doğru günlük dosyasını avlamaktan kaçınabileceğimi düşündüm, ancak bu bana bu günlük girdilerini göstermedi ve aslında 2 gün önce nedense cron olaylarını günlüğe kaydetmeyi durdurmuş gibi görünüyor)

20
mivk

Daha yeni bir çözüm ise python script chkcrontab

14
Dave Wongillies

Kötü serin Kabuk komut dosyaları , crontab dosyalarını doğrulayan bir Kabuk komut dosyasına sahiptir.

Komut dosyasını içeren Zip arşivini alabilirsiniz here

Komut dosyası verifycron olarak adlandırılır.

11
Ludwig Weinzierl

Bu harika çözümü burada buldum: https://crontab.gur

Sadece crontab'ı doğrulamakla kalmaz, crontab'ın ne ve ne zaman çalışacağını açıkça belirtir ve hataların nerede olduğunu vurgular.

3
JDS

Ubuntu'da, sadece koşabileceğim gibi görünüyor:

crontab path/to/crontab/file

NOT: Bu cronjob başlatmanın yan etkisi vardır (teşekkürler @NZD)

Dosya geçersizse, şöyle bir hata yapacağım:

"crontab":11: bad minute
errors in crontab file, can't install.
0
conradkdotcom