我的工作依赖于 MySQL。因此我希望我的工作可以在 MySQL 之后启动。
我读过新贵食谱我发现start on
可以自动启动一项工作。
start on started mysql
并且它可以工作。但是我不希望 mysql 在启动后影响我的工作。当我停止工作时,它将通过重新启动 mysql 重新启动。如何避免这种情况?
答案1
在文件夹中创建一个锁定文件/tmp/
来跟踪您的作业是否已运行。以下是一个例子:
创建这两个 upstart 作业配置文件:
/etc/init/joba.conf
# job A start on local-filesystems stop on runlevel[016] script /bin/echo job-A started >> /tmp/myjobs.log exec sleep 5 end script
/etc/init/jobb.conf
# job B triggered after A start on started joba script /bin/echo job-B started >> /tmp/myjobs.log if ! [ -f /tmp/jobb.lock ] then /bin/echo " do job-B tasks" >> /tmp/myjobs.log /bin/touch /tmp/jobb.lock else /bin/echo " bypass job-B tasks" >> /tmp/myjobs.log fi exec sleep 5 end script
重启
- 检查
cat /tmp/myjobs.log
或sudo tail -f /tmp/myjobs.log
在另一个窗口中打开。 - 尝试再次运行作业 A
sudo start joba
检查
/tmp/myjobs.log
,查看绕过说明:job-A started job-B started do job-B tasks job-B started bypass job-B tasks job-A started job-B started job-A started bypass job-B tasks
笔记:每次运行,我们都有 3 行。这里的行排序无关紧要。stdout
缓冲问题,与 upstart 无关。作业按正确的顺序运行。