pengembangan-web-mp.com

Apakah ada cara untuk memvalidasi format / etc / crontab?

Saya lebih suka menempel tugas terjadwal di/etc/crontab sehingga saya bisa melihat sekilas apa yang dijadwalkan untuk dijalankan, terlepas dari pengguna yang menjalankan tugas tersebut.

Satu-satunya Gotcha adalah bahwa format tidak divalidasi pada save, tidak seperti crontab -e - jadi karakter yang tersesat dapat dengan diam-diam menghancurkan seluruh cron.

Apakah ada cara untuk memvalidasi format/etc/crontab sebelum/sesudah menyimpan?

37
Ben K.

Satu-satunya cara yang dapat diandalkan yang saya temukan adalah untuk memeriksa log.

cron memeriksa /etc/crontab setiap menit, dan mencatat pesan yang menunjukkan bahwa ia telah memuatnya kembali, atau menemukan kesalahan.

Jadi setelah mengedit, jalankan ini:

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

Atau, untuk tidak menunggu satu menit penuh, tetapi hanya sampai menit berikutnya + 5 detik:

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

Contoh output dengan kesalahan:

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)

Output yang baik:

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

Itu di Debian 8. Pada sistem lain, cron mungkin masuk ke file yang berbeda.

(Saya pikir saya bisa menghindari perburuan file log yang benar dengan menggunakan systemd journalctl -u cron, tetapi itu tidak menunjukkan entri log ini kepada saya, dan sebenarnya tampaknya telah berhenti mencatat aktivitas cron 2 hari yang lalu karena beberapa alasan)

20
mivk

Solusi lain yang lebih baru adalah python script chkcrontab

14
Dave Wongillies

Skrip Shell keren yang jahat memiliki skrip Shell yang memvalidasi file crontab.

Anda bisa mendapatkan arsip Zip yang berisi skrip di sini

Script ini disebut verifycron

11
Ludwig Weinzierl

Saya menemukan solusi keren ini di sini: https://crontab.gur

Itu tidak hanya memvalidasi crontab, itu memberi tahu Anda secara eksplisit apa dan kapan crontab akan berjalan, dan menyoroti di mana kesalahan berada.

3
JDS

Di Ubuntu, sepertinya saya bisa menjalankan:

crontab path/to/crontab/file

CATATAN: ini memiliki efek samping memulai cronjob ini (terima kasih @NZD)

Jika file tidak valid, saya akan kesalahan, seperti:

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