Petit truc en vrac
Par Laurent le mardi 2 octobre 2007, 23:15 - Trucs en vrac - Lien permanent
Dans le principe que "Si j'ai ce problème, il y a de fortes chances que d'autres soient dans le même cas de figure", voici le premier billet d'une probablement longue série.
Problème: Comment executer un script au démarrage d'une machine quand on n'est pas root !
Quelques précisions: l'un de mes amis et colocataires de notre serveur dédié utilise fetchmail. Mais à chaque fois qu'il y a reboot du serveur (ce qui est arrivé une ou deux fois), adieu fetchmail... Donc pour parer à cela, il a ajouté un script dans sa crontab pour vérifier toutes les heures si fetchmail est démarré, et dans le cas contraire, le script lance fetchmail. Pas mal mais peut on faire mieux ?
La réponse est oui, du moins si on utilise Vixie cron (le cron par défaut d'ubuntu et de tant d'autres) dans sa version 3 (qui date de 1993). Oui, ce bon vieux cron que l'on croit seulement capable de lancer des tâches périodiquement. En faisant un simple
man 5 crontab
, on tombe sur ce paragraphe:
et oui un simple @reboot et le tour est joué...À la place des cinq premiers champs peut apparaître l’une des huit chaînes spéciales :
chaîne signification
------ -------
@reboot Exécuter une fois au démarrage.
@yearly Exécuter une fois par an, « 0 0 1 1 * ».
@annually (idem que @yearly)
@monthly Exécuter une fois par mois, « 0 0 1 * * ».
@weekly Exécuter une fois par semaine, « 0 0 * * 0 ».
@daily Exécuter une fois par jour, « 0 0 * * * ».
@midnight (idem que @daily)
@hourly Exécuter une fois par heure, « 0 * * * * ».
Commentaires
Classique, mais efficace. Quand j'ai découvert cela il y a un an ou deux, cela a été l'illumination suivie immédiatement d'une paix intérieure intense.
Comme quoi, les petits bonheurs...