Saya lebih suka menempel tugas terjadwal di / etc / crontab sehingga saya bisa melihat sekilas apa yang dijadwalkan untuk dijalankan, terlepas dari pengguna mana tugas itu dijalankan.
Satu-satunya Gotcha adalah bahwa format tidak divalidasi pada save, tidak seperti crontab -e - sehingga karakter yang tersesat dapat dengan diam-diam menghancurkan seluruh cron.
Apakah ada cara untuk memvalidasi format / etc / crontab sebelum / sesudah menyimpan?
Jawaban:
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 memuatnya kembali, atau menemukan kesalahan.Jadi setelah mengedit, jalankan ini:
Atau, untuk tidak menunggu satu menit penuh, tetapi hanya sampai menit berikutnya + 5 detik:
Contoh output dengan kesalahan:
Output yang baik:
Itu di Debian 8. Pada sistem lain, cron mungkin masuk ke file yang berbeda.
(Saya pikir saya bisa menghindari berburu file log yang benar dengan menggunakan systemd
journalctl -u cron
, tapi itu tidak menunjukkan kepada saya entri log ini, dan sebenarnya tampaknya telah berhenti mencatat peristiwa cron 2 hari yang lalu karena beberapa alasan)sumber
Solusi lain yang lebih baru adalah skrip python chkcrontab
sumber
Skrip shell keren yang jahat memiliki skrip shell yang memvalidasi file crontab.
Anda bisa mendapatkan arsip zip yang berisi skrip di sini
Skripnya disebut verifycron
sumber
Saya menemukan solusi keren ini di sini: https://crontab.guru
Itu tidak hanya memvalidasi crontab, itu memberi tahu Anda secara eksplisit apa dan kapan crontab akan berjalan, dan menyoroti di mana kesalahan berada.
sumber
Di Ubuntu, sepertinya saya bisa menjalankan:
CATATAN: ini memiliki efek samping memulai cronjob ini (terima kasih @NZD)
Jika file tidak valid, saya akan kesalahan, seperti:
sumber
* 4/0 * * /bin/myscript.sh
-4/0
tidak valid. tetapi tidak tertangkap dengan metode ini0
terlarang? unix.stackexchange.com/questions/32027/…