我有三个作业在我的系统上运行,名称如下
但是我不知道如何安排我的两个作业Test 2和Test 3,这样Test 2只在每周五的偶数周运行,Test 3只在每周五的奇数周运行。如果有人能为我的查询提供可能的解决方案,我将不胜感激
xvw2m8pv1#
由于crontab格式中没有周数字段,因此无法将cron调度到奇数周数(或偶数周数)。解决方案需要每周执行cronjob,并在调用作业之前确定周数是奇数还是偶数,这在下面完成。首先,我们准备一个cron作业,在每年的每周五03:00执行(您可以选择其他时间:)
0 3 * * 5 my_weekly_cron
字符串在my_weekly_cron中(在开头),您包括以下内容:
my_weekly_cron
# this will make the job to exit if the week number is even. [ $(expr $(date '+%W') % 2) = 0 ] && exit
型在奇数周内执行你的cronjob或
# this will make the job to exit if the week number is odd. [ $(expr $(date '+%W') % 2) = 0 ] || exit
型在偶数周内完成你的工作您还可以执行以下操作(在crontab条目中包含您的测试,因此您不必触及cron脚本本身)
# this will execute the crontab if the week is even 0 3 * * 5 [ $(expr $(date '+%W') % 2) = 0 ] && my_biweekly_cron
型将在偶数周内执行my_biweekly_cron,而
my_biweekly_cron
# this will execute the crontab if the week is odd 0 3 * * 5 [ $(expr $(date '+%W') % 2) = 0 ] || my_biweekly_cron
型会在奇数周内执行解释
[
test(1)
0
expr(1)
%
'+%W'
date(1)
3xiyfsfu2#
我想你的意思是这个奇怪的例子:= 1不是0
# this will execute the crontab if the week is odd 0 3 * * 5 [ $(expr $(date '+%W') % 2) = 1 ] || my_biweekly_cron
字符串
2条答案
按热度按时间xvw2m8pv1#
由于crontab格式中没有周数字段,因此无法将cron调度到奇数周数(或偶数周数)。解决方案需要每周执行cronjob,并在调用作业之前确定周数是奇数还是偶数,这在下面完成。
首先,我们准备一个cron作业,在每年的每周五03:00执行(您可以选择其他时间:)
字符串
在
my_weekly_cron
中(在开头),您包括以下内容:型
在奇数周内执行你的cronjob
或
型
在偶数周内完成你的工作
您还可以执行以下操作(在crontab条目中包含您的测试,因此您不必触及cron脚本本身)
型
将在偶数周内执行
my_biweekly_cron
,而型
会在奇数周内执行
解释
[
是test(1)
命令。允许shell脚本中的布尔测试。它用于测试周数除以2是否会导致0
作为余数。expr(1)
允许计算一个表达式,就像检查周数模2的结果(模运算符是%
符号)它计算周数并将其除以2,将余数作为输出。'+%W'
是date(1)
命令的格式字符串,用于仅在日期输出中打印周数。这是周数的源。3xiyfsfu2#
我想你的意思是这个奇怪的例子:= 1不是0
字符串