web-dev-qa-db-fra.com

Utilisez crontab pour redémarrer un service Upstart dans les délais prévus?

J'ai besoin de redémarrer shiny-server (service Upstart) sur Ubuntu 12.04 selon un calendrier de routine.

Généralement, si je veux redémarrer ce service manuellement, je tape simplement: Sudo restart shiny-server ou service shiny-server restart (comme root). Si je comprends bien, cela ressemble à quelque chose comme Sudo restart mysql.

Pour planifier le redémarrage, j'ai essayé les entrées suivantes dans mon root utilisateur crontab:

 0 6 * * * restart shiny-server
 0 6 * * * service shiny-server restart
 0 6 * * * bash /home/local/ANT/raybao/dev/script.sh

Où la dernière ligne de script.sh est service shiny-server restart.

Aucune de ces réponses ne fonctionne réellement!

Donc, je suis assez perplexe/confuse. Qu'est-ce que je rate? Merci!!

Plus d'infos pour shiny-server ici: http://rstudio.github.io/shiny-server/latest/#upstart-ubuntu-12.04-through-14.10-redhat-6

2
Ray

Vous êtes sur le bon chemin en ajoutant ceci à l'utilisateur cron de l'utilisateur racine.

Chemins système complets

Lorsque vous utilisez cron, vous voulez vous assurer d'utiliser chemins système complets pour les commandes et les fichiers. Vous pouvez utiliser la commande which pour savoir où se trouve restart: which restart. Pour moi, cela montre /sbin/restart.

Donc, en utilisant cette information, le cron ressemblerait à ceci:

0 6 * * * /sbin/restart shiny-server

qui redémarrerait le serveur à 6 h 00, heure du système.

Sortie vers/dev/null

Lorsque cron est exécuté, il envoie par courrier électronique toute sortie à l'utilisateur exécutant les tâches cron. Si vous ne voulez pas cela, ce que vous n'avez probablement pas, la commande que vous exécuteriez ressemblerait à ceci:

0 6 * * * /sbin/restart shiny-server > /dev/null 2>&1

Cela produira stdout et stderr dans /dev/null, au lieu d’être lu par cron.

Modifier

À l’origine, j’avais mal compris et je pensais que ce service fonctionnait sous init, alors qu’il utilise en fait upstart. La morale de l'histoire reste tilisez les chemins du système complet avec cron.

8
earthmeLon