UpStart initctl启动|重启ubuntu

Nic*_*las 14 upstart

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

initctl restart JOB complains if not already running
initctl start JOB complains if already running.
Run Code Online (Sandbox Code Playgroud)

我可以编写脚本来做

initctl start JOB
initctl restart JOB
Run Code Online (Sandbox Code Playgroud)

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

hma*_*tes 10

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

如果失败则调用start和restart:

initctl start JOB || initctl restart JOB
Run Code Online (Sandbox Code Playgroud)

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

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

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

绝对正在寻找一个改进.

我希望这有帮助.


Las*_*ert 7

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

sudo stop JOB || true && sudo start JOB
Run Code Online (Sandbox Code Playgroud)

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