使用 upstart 停止未知实例

使用 upstart 停止未知实例

我刚刚开始新贵,所以我编写了一个非常基本的脚本,只是为了打印到名为:的日志文件,vm-service.conf我放入了/etc/init

description "Virtual Images"
author      "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn   


script
echo "DEBUG: `set`" >> /tmp/vm-service.log

end script


pre-stop script
    echo "DEBUG: `set`" >> /tmp/vm-service.log
end script

如果我运行sudo start vm-service,它输出:

vm-service start/running, process 29034

但是,当我运行时sudo stop vm-service,它输出:

stop: Unknown instance

我尝试过运行sudo initctl reload-configuration,但停止时仍然出现错误。

我看过食谱但我可能错过了一些明显的东西。

答案1

如果主进程(指定了脚本或 exec 节则运行的进程)退出,Upstart 将认为作业已停止。 Upstart 随后将运行启动后流程。

所以发生的情况是第一个脚本正在运行并退出,Upstart 正在考虑作业停止,然后第二个脚本正在运行并退出。如果您对已停止的作业运行停止命令,它会打印您看到的消息。

要处理此问题,请使用预启动节:

pre-start exec foo --bar

post-start exec baz --foo

如果您这样做,一旦预启动节完成,Upstart 将看到作业已开始,而不是已停止。

相关内容