67 votes

Existe-t-il un moyen de valider le format de /etc/crontab ?

Je préfère conserver les tâches planifiées dans le fichier /etc/crontab afin de pouvoir voir d'un coup d'œil ce qui est programmé, quel que soit l'utilisateur sous lequel la tâche s'exécute.

Le seul problème est que le format n'est pas validé lors de la sauvegarde, contrairement à crontab -e -- donc un caractère erroné peut tranquillement casser tout le cron.

Existe-t-il un moyen de valider le format /etc/crontab avant/après l'enregistrement ?

48voto

mivk Points 3226

Le seul moyen fiable que j'ai trouvé est de vérifier le journal.

cron contrôles /etc/crontab toutes les minutes, et enregistre un message indiquant qu'il l'a rechargé ou qu'il a trouvé une erreur.

Donc, après l'édition, exécutez ceci :

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

Ou de ne pas attendre une minute entière, mais seulement la minute suivante + 5 secondes :

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

Exemple de sortie avec une erreur :

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)

Bon rendement :

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

C'est sur Debian 8. Sur d'autres systèmes, cron peut enregistrer dans un fichier différent.

(Je pensais pouvoir éviter de chercher le bon fichier journal en utilisant la fonction journalctl -u cron mais cela ne m'a pas montré ces entrées de journal, et semble même avoir cessé d'enregistrer les événements cron il y a 2 jours pour une raison quelconque).

16voto

Dave Wongillies Points 462

Une autre solution plus récente est le script de Python. chkcrontab

11voto

Benjamin Pollack Points 10458

Un système très cool Shell Shell. possède un Shell Shell qui valide les fichiers crontab.

Vous pouvez obtenir l'archive zip contenant le script. aquí

Le script est appelé verifycron

6voto

JDS Points 2488

J'ai trouvé cette solution sympa ici : https://crontab.guru

Il ne se contente pas de valider la crontab, il vous indique explicitement quand et comment la crontab s'exécutera, et met en évidence les erreurs.

2voto

outOfHeap Points 144

Sur Ubuntu, il semble que je puisse simplement lancer :

crontab path/to/crontab/file

NOTE : ceci a pour effet secondaire de démarrer ce cronjob (merci @NZD)

Si le fichier n'est pas valide, j'obtiendrai une erreur, comme par exemple :

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X