web-dev-qa-db-fra.com

Exécution de la commande au démarrage sur crontab

Je voulais exécuter une commande sur notre Linux après son redémarrage, j'ai vu que cela pouvait être fait en utilisant crontab. Je voulais exécuter cette commande

Sudo ifdown eth0 && Sudo ifup -v eth0

sur la crontab, puis-je simplement faire:

@reboot Sudo ifdown eth0 && Sudo ifup -v eth0

ou dois-je stocker cela dans un script?

merci

20
Lottie

Quelques notes ici avant que cela fonctionne:

  1. N'utilisez pas Sudo dans un travail cron. Editez plutôt le fichier crontab de root au lieu du vôtre, par exemple. Sudo crontab -e puis entrez des commandes sans Sudo.
  2. Comme @mikew Quoi que ce soit mentionné, il s'agit d'une utilisation inhabituelle pour cron et serait probablement mieux placé dans /etc/rc.local avant la ligne exit 0.
  3. Si vous nous dites exactement ce que vous recherchez, nous pourrons peut-être vous diriger vers une option de journalisation ou de configuration (le redémarrage de vos services réseau au démarrage est un peu haineux).
  4. Sur la plupart des systèmes, @reboot devrait également s'exécuter après un arrêt définitif ou un crash, mais il existe différentes implémentations cron, telles que YMMV. J'ai vu des commentaires à différents endroits affirmant les deux.

EDIT (2016/02/17): Suppression du blurb incorrect sur les chemins absolus; bravo @muru
EDIT (2016/10/17): Ajout de la note d'arrêt
EDIT (2017/09/11): Note d'arrêt révisée. Pas vraiment sûr sur celui-là.

32
TheSchwa

Vous pouvez utiliser crontab pour cela, mais si vous utilisez Sudoname__, vous aurez besoin d'une règle NOPASSWDdans sudoerspour le faire. (Voir Comment exécuter un travail cron à l'aide de la commande Sudo .)

Il serait plus simple de modifier /etc/rc.local et d’ajouter ces commandes avant la ligne exit 0.

6
muru