我刚刚开始新贵,所以我编写了一个非常基本的脚本,只是为了打印到名为:的日志文件,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 将看到作业已开始,而不是已停止。