我有一个守护进程/服务(milter-regex),它快要死了。我只是暂时使用它(几个月),所以不要太在意,但我希望它在死机后重新启动。
这是一个 init.d 脚本。 'service milter-regex start' 等。初始化脚本位于 /etc/init.d/milter-regex
我知道如果 /etc/inittab 中有什么东西,如果它死了,它会自动重生。 init 脚本也应该执行此操作,还是需要将其放入 inittab 中?
它可能无法重新启动,因为它没有清理过时的袜子文件,我今天将修复该文件,但我想我还是会问这个问题。
在 RHEL4 上运行(是的,旧的)
谢谢,布洛克
答案1
我必须为 RHEL6 解决一个非常类似的问题。 (此外,不仅有一个命令,还有一连串命令。)因为我想继续使用脚本/etc/init.d
,所以我编写了一个小工具pipexec
:如果子进程终止,这将重新启动它,并且可以轻松集成到/etc/init.d
脚本中,因为例如它还支持 pid 文件处理。
例子:
$ pipexec -p /var/run/whatsoever.pid -s 5 -- /opt/bin/whatsoever
创建 pid 文件,运行/opt/bin/whatsoever
.当whatsoever
异常终止时(例如通过信号),pipexec
等待5秒并重新启动它。
亲切的问候 - 安德烈亚斯
答案2
当服务崩溃时,init.d 中的脚本不会自动重新运行。如果您想要做最少的工作来确保它运行,inittab 可能是您最好的选择。不过这很恶心,几乎和仍然运行 RHEL 4 一样恶心。