我有一个组件 --- 由 upstart 启动 --- 有一个错误。该错误导致应用程序冻结,不幸的是,它没有崩溃。
作为临时解决办法,我想强制服务每 x 小时重启一次,以免错误导致应用程序冻结。使用 upstart 可以实现吗?
我可以为其实现一个 cron 作业,但我更愿意将其保留在 upstart 中,以便将所有启动逻辑集中在一个地方。
答案1
我希望您使用脚本外部的“重新加载”或“重新启动”选项来执行此操作。请参阅 mysql 和 apache 作为示例:“service apache restart”。
修改你的 upstart 脚本,使其具有“重启”功能,然后将其作为命令添加到“/etc/crontab”。
是的,我知道这不是您想要的答案,但我还希望 upstart 脚本在冻结且没有崩溃的情况下不会自行重新启动。“oncrash”可以触发重新启动,但“onfreeze”可能无法检测到。
看第 16 章 守护进程行为获得一些关于这方面的提示。