本文主要是介绍如何使用cron任务每隔2天在固定时间执行任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简介
通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。本文将介绍crontab的一个特殊应用需求,如何通过crontab来每隔2天在固定时间执行任务。
crontab时间说明
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR
#sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * command to be executed
minute:代表一小时内的第几分,范围 0-59。
hour:代表一天中的第几小时,范围 0-23。
mday:代表一个月中的第几天,范围 1-31。
month:代表一年中第几个月,范围 1-12。
wday:代表星期几,范围 0-7 (0及7都是星期天)。
who:要使用什么身份执行该指令,当您使用 crontab -e 时,不必加此字段。
command:所要执行的指令。
解决方案
根据上面对crontab时间格式的说明,比较直观的解决方案是对日期整除2来实现此方案:
15 0 */2 * * insert_your_script_here.sh
上面的需求貌似解决了每隔2天在凌晨15分时执行固定的任务。但实际上有些月份有31天,导致本月31号和下月1号,都会执行此操作,并没有真正实现每隔两天周期来执行任务。
crontab并没有提供这个需求的直接支持,但细思这个需求,结合crontab支持每天执行固定操作,需要做的就是跳过一天不进行操作,那么是否可以通过记录一个标志来实现当前操作是否需要真正执行任务呢?答案是可以的,可以通过在/tmp目录下标记文件的方式来实现:
if [ -f /tmp/altday ];thenrm /tmp/altdayexit 0
elsetouch /tmp/altdayinsert_your_script_here.sh
fi
当然也可以记录时间,来检查是否经过了2天的周期,但没有这种方案更直接。
这篇关于如何使用cron任务每隔2天在固定时间执行任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!