/ Etc / crontab formatını doğrulamak için bir yol var mı?


35

Zamanlanmış görevleri / etc / crontab dizinine yapıştırmayı tercih ediyorum, böylece görevin hangi kullanıcı olarak çalıştığından bağımsız olarak, ne zaman çalışacağını bir bakışta görebiliyorum.

Tek sorun, biçimin crontab -e'nin aksine kaydetme işleminde doğrulanmadığıdır - bu yüzden başıboş bir karakter tüm cronu sessizce kırabilir.

/ Etc / crontab formatını kaydetmeden önce / sonra doğrulamanın bir yolu var mı?


4
Benim gibi, buraya, cron giriş hakkınızı alıp almadığınızı söylemeniz için basit (komut dosyası olmayan) bir yol aramaya başladıysanız , cronchecker.net ile ilgilenebilirsiniz - bu , insanla cron girişleri için çevrimiçi bir onaylayıcıdır. dost çıktı.
Matt Gibson

Yanıtlar:


16

Bulduğum tek güvenilir yol kütüğü kontrol etmektir.

cron/etc/crontabher dakika denetler ve yeniden yüklediğini veya bir hata bulduğunu belirten bir mesaj günlüğe kaydeder.

Öyleyse düzenlemeden sonra şunu çalıştırın:

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

Veya tam bir dakika beklememek için, ancak yalnızca bir sonraki dakikaya kadar + 5 saniye:

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'leri kullanarak doğru günlük dosyasını bulmaktan kaçınabileceğimi düşündüm journalctl -u cron, ama bu bana bu günlük girişlerini göstermedi ve aslında 2 gün önce cron olaylarını kaydetmeyi bırakmış görünüyor.)


FreeBSD 10.3 üzerinde test edilmiştir. Bir cazibe gibi çalışır, sadece / var / log / cron ile log yolunu değiştirin
Jette



3

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

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.


0

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

crontab path/to/crontab/file

NOT: Bu, bu cronjob başlayan 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.

1
Bu komut crontab dosyasını kontrol eder, ancak aynı zamanda (hata içermiyorsa) onu yükler. Bu muhtemelen OP için istenmeyen bir yan etkidir.
NZD

Teşekkürler @NZD, OP'nin bunun farkında olduğundan emin olmak için bunu cevabıma ekledim.
conradkdotcom

@conradk komutu cronjob'ı başlatmaz, kullanıcının mevcut crontab dosyasını sağlanan dosya ile değiştirir.
MadHatter,

Bu aslında crontab ile ilgili tüm olası problemlerde işe yaramaz; göz kamaştırıcı problemleri yakalayacaktır, ancak bunu yakalayamaz, örneğin: * 4/0 * * /bin/myscript.sh - 4/0geçersiz. ama bu yöntem tarafından yakalanmadı
JDS

@JDS Bir adım değeri değil mi? Bir adım değeri 0yasak mı? unix.stackexchange.com/questions/32027/…
conradkdotcom
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.