我有一个用C编写的守护进程,它使用daemon()调用。
如果意外失败,我希望upstart重新生成它。
我在Ubuntu 8.04上使用了相当旧版本的upstart,0.3.9。
我创建了以下文件(/etc/event.d/my-daemon):
start on startup
stop on shutdown
respawn
daemon
exec /usr/bin/my-daemon
状态:
# status my-daemon
my-daemon (stop) waiting
开始:
# start my-daemon
my-daemon (start) waiting
my-daemon (start) starting
my-daemon (start) pre-start
my-daemon (start) spawned, process 32631
my-daemon (start) post-start
my-daemon (start) running
显示我按预期执行ps aux | grep my-daemon
的时间。然后我使用kill -9
将其杀死,期望它重新生成,但之后再次发出ps aux
则没有显示任何内容。做status my-daemon
我得到:
my-daemon (start) running
有什么想法吗?
答案 0 :(得分:0)
我认为0.3.9不会按预期处理守护程序进程(与等待SIGCHLD有关)。对我来说,一个解决方法就是不进行背景/守护进程和重生工作。