![如何确保一个 Upstart 作业在另一个 Upstart 作业停止之前停止?](https://linux22.com/image/849372/%E5%A6%82%E4%BD%95%E7%A1%AE%E4%BF%9D%E4%B8%80%E4%B8%AA%20Upstart%20%E4%BD%9C%E4%B8%9A%E5%9C%A8%E5%8F%A6%E4%B8%80%E4%B8%AA%20Upstart%20%E4%BD%9C%E4%B8%9A%E5%81%9C%E6%AD%A2%E4%B9%8B%E5%89%8D%E5%81%9C%E6%AD%A2%EF%BC%9F.png)
有时我的服务器会通过 ACPI 关闭来关闭,我已设法使我的进程正常关闭。但是,我的进程(作业 A)在正常关闭期间依赖于另一个进程(作业 B),因此我现在想确保作业 B 在作业 A 停止之前不会停止。
这两个进程都是 Upstart 作业,因此我尝试通过将其添加到作业 B 的 /etc/init 文件中来执行此操作:
# Don't stop until job A stops
pre-stop script
while true
do
status A | grep -q "stop/waiting" && exit 0
sleep 1
done
end script
这似乎不起作用;当我通过 ACPI 关闭关闭服务器时,作业 B 通常会在作业 A 之前关闭,这样作业 A 就会发出有关作业 B 未启动的错误消息。
我的脚本有问题吗?我应该采取其他方法吗?还是说 Upstart 无法完成我想要的操作?
答案1
您可以在作业 A 中使用这些选项:
在所依赖的服务前停止
stop on stopping B
依赖服务后启动
start on started B