Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix Cron-如何在一个月的特定日期之后的第一个工作日运行作业?_Unix_Cron - Fatal编程技术网

Unix 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 ]

我们希望安排一个作业在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 ] &&  [ $(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
自己完成这项工作,并且不需要修改脚本。我知道他接受了你的回答,但你的回答没有回答他的问题。