unix – 如何控制runit服务自动重启的速率?

前端之家收集整理的这篇文章主要介绍了unix – 如何控制runit服务自动重启的速率?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个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...

猜你在找的Bash相关文章