加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 18:33:36 所属栏目:安全 来源:网络整理
导读:我有这个runit服务,运行和日志/运行脚本正常工作. 碰巧的是,服务本身可能因外部原因而崩溃,并且可能无法启动很长时间. 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...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读