UpStart initctl启动|重启ubuntu

时间:2012-02-28 09:47:27

标签: upstart

在ubuntu上使用upstart时如果没有运行则如何发出启动作业的命令,如果已经运行则如何重新启动。将应用程序部署到新节点时,未定义作业。

initctl restart JOB complains if not already running
initctl start JOB complains if already running.

我可以编写脚本来执行

initctl start JOB
initctl restart JOB

但它似乎并不是最好的事情。

3 个答案:

答案 0 :(得分:10)

我面临着同样的问题。 如果没有直接的“lazy-stop-then-start”命令内置initctl,我们必须编写脚本。

如果失败则调用启动和重启:

initctl start JOB || initctl restart JOB

这个脚本可能不是我们所寻求的答案,但它足够短,可以提及。

只要该服务运行良好,它就可以解决问题。

当服务失败时,此脚本会失败两次;例如,如果服务已停止并且实际上无法启动,则它也将无法重新启动。

绝对寻求改善。

我希望这会有所帮助。

答案 1 :(得分:7)

我也尝试了hmalphettes建议的'启动或重启'方法,但遇到了麻烦。使用此方法时,将不会应用对upstart脚本的更新。相反,我使用它,这可以像我期望的那样工作:

sudo stop JOB || true && sudo start JOB

这基本上是“如果它正在运行就停止工作,然后启动它。”

答案 2 :(得分:2)

sudo service JOB restart

在Ubuntu中修补了service命令,使其在Upstart上的工作方式与sysvinit上最常见的情况相同。

systemctl restart JOB

有一些意想不到的效果,一般在使用前应仔细研究。它主要存在,因此您无需重新加载作业定义即可重新启动作业,这是一种非常罕见的情况。