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
Vous êtes sur le bon chemin en ajoutant ceci à l'utilisateur cron
de l'utilisateur racine.
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.
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
.
À 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
.