新贵不重生守护进程
我有一个用 C 编写的守护进程,它使用 daemon() 调用。
如果它意外失败,我希望新贵能够重生。
我在 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
有什么想法吗?
I have a daemon written in C which uses the daemon() call.
I want upstart to respawn this should it fail unexpectedly.
I'm using a fairly old version of upstart, 0.3.9, on Ubuntu 8.04.
I created the following file (/etc/event.d/my-daemon):
start on startup
stop on shutdown
respawn
daemon
exec /usr/bin/my-daemon
Status:
# status my-daemon
my-daemon (stop) waiting
Start:
# 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
It shows when I do ps aux | grep my-daemon
as expected. I then kill it using kill -9
expecting it to respawn but issuing ps aux
again shows nothing afterwards. Doing status my-daemon
I get:
my-daemon (start) running
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不认为 0.3.9 按预期处理守护进程(与等待 SIGCHLD 有关)。对我来说,一个解决方法是不让进程后台/守护进程,并且重生有效。
I don't think 0.3.9 handles daemon processes as expected (something to do with it waiting around for SIGCHLDs). A workaround for me was to just not background/daemonise the process and the respawn works.