新贵不重生守护进程

发布于 2024-12-25 10:39:16 字数 811 浏览 1 评论 0原文

我有一个用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

何以心动 2025-01-01 10:39:16

我不认为 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文