在ubuntu上使用upstart时,如果没有运行,如何发出启动作业的命令;如果已经运行,如何发出重新启动作业的命令。将应用程序部署到新节点时,未定义作业。
initctl restart JOB complains if not already running
initctl start JOB complains if already running.我可以编写脚本让它这样做
initctl start JOB
initctl restart JOB但这似乎不是最好的做法。
发布于 2012-03-16 15:00:34
我也遇到过同样的问题。如果没有内置在initctl中的"lazy-stop-then-start“命令,我们就必须编写脚本。
调用start并在失败时重新启动:
initctl start JOB || initctl restart JOB这个脚本可能不是我们两个都想要的答案,但它足够简短,可以提到它。
只要服务运行良好,它就会成功。
当服务失败时,此脚本将失败两次;例如,如果服务已停止并且实际上无法启动,则它也将无法重新启动。
当然,我正在寻找改进的方法。
我希望这能帮到你。
发布于 2014-05-02 05:15:01
我也尝试了hmalphettes建议的“启动或重启”方法,但遇到了麻烦。当使用这种方法时,将不会应用对upstart脚本的更新。取而代之的是,我使用这个,它的工作方式与我预期的一样:
sudo stop JOB || true && sudo start JOB这基本上是“如果作业正在运行,则停止它,然后启动它”。
发布于 2014-05-06 05:27:28
sudo service JOB restart服务命令在Ubuntu中打了补丁,使其在Upstart上的工作方式与在sysvinit上最常见的情况下相同。
systemctl restart JOB有一些意想不到的效果,通常在使用之前应该仔细研究。它主要在那里,所以您可以在不重新加载作业定义的情况下重新启动作业,这是非常少见的情况。
https://stackoverflow.com/questions/9479668
复制相似问题