我有这个runit服务,运行和日志/运行脚本正常工作.
碰巧的是,服务本身可能因外部原因而崩溃,并且可能无法启动很长时间. runit处理这种情况的默认方式是每隔几秒重新启动一次服务.我该如何改变这种行为?
我最后的见解是添加一个检查脚本并在那里做一些魔术,但它看起来要复杂得多.有更好的简单方法吗?
我不熟悉这个设施,但是,如果我的任务是解决这个问题,并且一个非常简短的手册页阅读没有提供一个简单的旋钮来调整这种行为,我会做以下事情:
扩展现有的服务启动脚本,或者如果这很麻烦,请在链中插入一个新的启动脚本(然后启动原始启动脚本).新的启动脚本应该检查最后一次启动是否最近发生,而不是立即启动服务.这可以通过检查先前启动创建的信令文件来完成.如果该文件不存在,脚本可以继续并触摸该文件并启动该服务.如果文件存在,脚本应检查文件是否足够大.如果它还不够大,它应该在循环中等待(休眠),直到文件变得足够大.
这样的东西可能会起作用(重启之间至少等待1分钟):
#!/bin/bash SIGNALDIR=/tmp SIGNALFILE=service.started while /bin/true; do found=`find "${SIGNALDIR}" -maxdepth 1 -name "${SIGNALFILE}" -mmin -1 | wc -l` [ "${found}" -eq 0 ] && break echo "Waiting" sleep 10 done touch "${SIGNALDIR}/${SIGNALFILE}" original service start...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。