我在(VMWare)VM上使用Red Hat
Linux(RHEL5).我写了一个守护进程,它应该一直保持运行并自动在启动时运行.
昨晚VM主机出现了无法恢复的硬件问题,VM突然停止运行.当它回来时,我的守护进程没有启动,因为pidfile仍然存在.
显然这被称为The Stale pidfile Syndrome,但我不确定什么是减轻它的最佳长期方法.我认为/etc/rc.d*中的启动脚本应该在启动守护进程之前删除pidfile,但是/etc/init.d中的服务管理脚本应该保持不变,所以service mydaemon start之类的东西不会破坏了pidfile.
/etc/rc.d/rc6.d只是在/etc/init.d/中有一个符号链接到脚本,所以如何才能改变它在启动时的行为?我可以在rc.d dirs中创建一个具有更高优先级的附加脚本,但它看起来很hacky.有人还建议添加逻辑,如“正常运行时间不到1分钟,删除pid文件”,但这似乎也很麻烦.
任何想法或解决方案或最佳做法?
解决方法
使用
daemontools并查看
Process Management.