是否可以每50小时执行一次cronjob?

是否可以每50小时执行一次cronjob?,cron,Cron,我一直在寻找每50小时执行一个脚本的cron计划。使用cron,每两天运行一次作业很简单。我们可以像 0 0 */2 * * command 但是每50小时一次呢?如果您想每隔n小时运行一次cron,其中n不除以24,您不能用cron干净地执行此操作,但这是可能的。要做到这一点,您需要在cron中放置一个测试,该测试将检查时间。最好在查看UNIX时间戳时执行此操作,即自1970-01-01 00:00:00 UTC以来的总秒数。假设我们想从McFly抵达Riverdale的那一刻开始: % d

我一直在寻找每50小时执行一个脚本的cron计划。使用cron,每两天运行一次作业很简单。我们可以像

0 0 */2 * * command

但是每50小时一次呢?

如果您想每隔
n
小时运行一次cron,其中
n
不除以24,您不能用cron干净地执行此操作,但这是可能的。要做到这一点,您需要在cron中放置一个测试,该测试将检查时间。最好在查看UNIX时间戳时执行此操作,即自1970-01-01 00:00:00 UTC以来的总秒数。假设我们想从McFly抵达Riverdale的那一刻开始:

% date -d '2015-10-21 07:28:00' +%s 
1445412480
对于在'2015-10-21 07:28:00'之后每隔
50
th小时运行一次的cronjob,crontab如下所示:

# Example of job definition:
# .---------------- 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)
# |  |  |  |  |
# *  *  *  *  *   command to be executed
 28  *  *  *  *   hourtestcmd "2015-10-21 07:28:00" 50 && command
hourtestcmd
定义为

#/usr/bin/env bash
开始时间=$(日期-d“$1”+%s)
#返回UTC时间
现在=$(日期“+%s”)
#获取小时数
小时数=$((现在-开始时间)/3600))
#获取剩余分钟数
分钟=$((现在-开始时间-小时*3600)/60))
#设模
模=2美元
#做测试
((现在>=starttime))&&((小时%modulo==0))&&((分钟==0))
备注:UNIX时间以UTC为单位。如果您的cron运行在受夏令时影响的不同时区,则可能导致程序以偏移量执行,或者当夏令时变为活动时,增量为51小时或49小时

备注:UNIX时间不受闰秒的影响

备注:
cron
没有亚秒精度

备注:注意我是如何将分钟数与开始时间中的分钟数相同的。这是为了确保cron只每小时运行一次