我正在维护一个 Upstart 脚本(版本 0.6.5),其中pre-start script
有一个测试,如果先决条件不满足则终止服务:
pre-start script
if [ ! -f $REQUIRED_FILE ]; then
echo "$REQUIRED_FILE does not exit" >> $LOG_FILE
stop
exit 1
fi
end script
根据csh
/tcsh
参考文档,stop [jobIDs]
:
暂停当前后台作业或者由 jobID 指定的后台作业;这是 Ctrl-Z 或 suspend 的补充。
我认为stop
这里没有任何用处,特别是在pre-start
服务尚未启动的部分(即通过exec
节)。
我是不是漏掉了什么?还是说stop
这里的内容是多余的、不必要的?
答案1
在作业内部使用stop
相当于调用sudo stop <job-name>
。如果你想禁用respawn
作业的 -ing,则可以使用此方法。
关于预启动节的 upstart 文档有一个示例,解释了这种用法:
http://upstart.ubuntu.com/cookbook/#pre-start
另一种可能性是出于某种原因取消作业的启动。一个很好的理由是从系统配置中可以清楚地看出不需要服务:
pre-start script if ! grep -q 'parent=foo' /etc/bar.conf ; then stop ; exit 0 fi end script