每日固定时间执行一次的shell实现

在不使用crontab定时任务的情况下,我们如何去实现每日定时执行某个任务的工作呢?

我遇到了类似问题,遂转换思路,花几分钟写了个小脚本实现如下:

#!bin/bash
#每日7点执行
ctime=0700
#定义个判断天数的flag
flag=1
#取得昨天的天数日期
tmp=`date +%H%M%d --date="-1 day"`

#死循环,组合判断,实现每日调用一次目标方法/脚本
while(true)
do
now_time=`date "+%H%M"`
today=`date "+%H%M%d"`
tmp1=`expr $today - $tmp`

if [ $tmp1 -gt 0 -a $flag -eq 0 ];then
flag=1
echo -e "`date "+%Y-%m-%d %H:%M:%S"`---reset flag success!"
fi

if [ $ctime -lt $now_time -a $flag -eq 1 ];then
echo -e "call time:`date "+%Y-%m-%d %H:%M:%S"`"
#这里可执行目标方法/调用目标脚本  如本例中的sh target.sh
sh target.sh
tmp=`date "+%H%M%d"`
flag=0
fi
sleep 1m
done

如上脚本命名为run_task.sh,使用时只需保证其在后台运行。只需以如下方式启动脚本即可

运维人员只需要关注脚本目录下产生的nohup.out文件,脚本运行日志都会打印到这里。

#不挂断且后台运行

nohup sh run_task.sh &

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值