使用 crontab 按计划重新启动 Upstart 服务?

使用 crontab 按计划重新启动 Upstart 服务?

我需要shiny-server按照例行计划在 Ubuntu 12.04 上重新启动(Upstart 服务)。

通常,如果我想手动重启此服务,我只需输入:sudo restart shiny-serverservice shiny-server restart(as root)。据我了解,这类似于sudo restart mysql

root为了安排重新启动,我尝试在用户中输入以下条目crontab

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

其中的最后一行script.shservice shiny-server restart

事实上,以上方法都不起作用!

所以我非常困惑。我遗漏了什么?谢谢!!

更多信息请参见shiny-server此处:http://rstudio.github.io/shiny-server/latest/#upstart-ubuntu-12.04-through-14.10-redhat-6

答案1

将其添加到 root 用户的路径正确cron

完整系统路径

使用时cron,一定要使用完整系统路径命令和文件。您可以使用which命令来查找restart位于:which restart。对我来说,它显示/sbin/restart

因此,使用此信息,cron 将如下所示:

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

这将在系统时间早上 6:00 重新启动服务器。

输出到/dev/null

运行时cron,它将发送电子邮件任何输出给运行 cron 作业的用户。如果您不想要这个(您可能不想),则您运行的命令应如下所示:

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

这会将 stdout 和 stderr 都输出到/dev/null,而不是被 读取cron

编辑

我最初误解了,以为这项服务正在使用 运行init,但实际上它正在使用upstart。这个故事的寓意依然是使用完整的系统路径当使用 时cron

相关内容