如果我安排一个作业在每天凌晨 3 点运行并且连续 3 天没有运行,当系统恢复运行时,Anacron 会执行 3 次,还是只执行一次?
如果只运行一次,有没有办法运行几次?
如果您想确保程序运行的次数与系统关闭时缺失的天数相同,您可以将命令包含在 bash 脚本中,如下所示,并使用常用的每日 cron 或 anacron 条目。
首先在文件中记下例如自程序上次运行时的纪元(即自 1970 年 1 月 1 日以来)以来date.of.lastrun的天数。您可以通过以下方式获取今天的该值:
echo $(($(date +%s)/86400))
Run Code Online (Sandbox Code Playgroud)
当 cron 运行此脚本时,它会从文件中读取此数字,计算今天的数字,然后重复您的命令直到它们匹配,每次都会更新文件。
let today=$(date +%s)/86400
lastrun=$(<date.of.lastrun)
if [ ! -z "$lastrun" ]
then while [ $lastrun -lt $today ]
do echo "run the command for $(($today-$lastrun)) days back"
# do your command ...
let lastrun+=1
echo $lastrun >date.of.lastrun
done
else echo 'you need to: echo $(($(date +%s)/86400)) >date.of.lastrun'
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
637 次 |
| 最近记录: |