Unix Cron-如何在一个月的特定日期之后的第一个工作日运行作业?
我们希望安排一个作业在12号的工作日或12号之后的第一个工作日运行。我可以在cron中指定吗?您不能在Unix Cron-如何在一个月的特定日期之后的第一个工作日运行作业?,unix,cron,Unix,Cron,我们希望安排一个作业在12号的工作日或12号之后的第一个工作日运行。我可以在cron中指定吗?您不能在cron中定义此类逻辑,通常的方法是将其添加到要运行的脚本中。因此,请每天像这样运行脚本: 0 0 * * * /path/to/script.sh 加进去 if [ "$(date +%d%m)" == "0101" ] then rm -f /var/run/flag fi if [ $(date +%d) -ge 12 ] && [ $(date +%w) -gt 0 ]
cron
中定义此类逻辑,通常的方法是将其添加到要运行的脚本中。因此,请每天像这样运行脚本:
0 0 * * * /path/to/script.sh
加进去
if [ "$(date +%d%m)" == "0101" ]
then rm -f /var/run/flag
fi
if [ $(date +%d) -ge 12 ] && [ $(date +%w) -gt 0 ] && [ $(date +%w) -lt 6 ] && [ ! -f /var/run/flag ]
then <do the work>
touch /var/run/flag
fi
exit
if[“$(日期+%d%m)”==“0101”]
然后rm-f/var/run/flag
fi
如果[$(日期+%d)-ge 12]&&&[$(日期+%w)-gt 0]&&[$(日期+%w)-lt 6]&&&[!-f/var/run/flag]
然后
触摸/var/run/flag
fi
出口
另外,你应该注意只跑一次(据我所知)这不是经常跑吗?例如,昨天(2月12日,星期三,%d=12和%w=3)和今天(2月13日,星期四,%d=13和%w=4)的条件均为真。OP不希望cronjob每月运行一次吗?另外,这个问题不是更适合吗?@pilcrow,可能这就是OP想要的,我在最后一句中提到了:)不确定它是否适合serverfault,但是标记shell bash将是合适的,但是您不会向OP展示如何运行它一次!:)您向他展示了如何在一个月内的每个工作日(大于或等于该月的第12天)运行它。他可以通过
012-31*1-5
自己完成这项工作,并且不需要修改脚本。我知道他接受了你的回答,但你的回答没有回答他的问题。