解决:centos秒级定时

1. 需求

每隔5秒检查某个进程占用内存大小

2. 分析

  • centos 最低只能到每隔一分钟,所以只能代码里sleep实现秒级了
  • 如果固定一分钟调用一次shell,可能因为代码逻辑过于复杂,导致没有在一分钟内运行完,然后多次调用同一个shell导致异常,需要加锁
  • 基于上一步分析,需要对sleep适当做平衡补偿

3. 上代码

#!/bin/sh
# author: scoful

# set -x # 开启就是详细debug模式

checkMemory(){
    echo $(date +%F%n%T)
    echo "====开始运行checkMemory脚本===="
	。。。敏感内容省略一下。。。
}

loop(){
    step=5  #间隔的秒数,不能大于60,然后定时设置一分钟调用一次,* * * * *
    for ((z=0;z<60;z=(z+step)));do
        checkMemory
        temp=`expr $step - 1` # 因为上一步可能耗时不止1秒,适当减少进行平衡
        sleep $temp
    done
    exit 0
}

#这一步就是锁了
[ "${FLOCKER}" != "$0" ] && exec env FLOCKER="$0" flock -en  "$0"  "$0"  "$@" ||
loop

echo "checkMemory shell the end"
echo $(date +%F%n%T)

再设置个定时任务

* * * * * root bash /home/scoful/checkMemory.sh >> /home/scoful/checkMemory.out 2>&1 &

搞定。

over,enjoy!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值