如何安排Job1-Job5运行,如下所示?
Sun Mon Tue Wed Thu
---------------------------
Job1 Job2
Sun Mon Tue Wed Thu
---------------------------
Job3 Job4 Job5
Sun Mon Tue Wed Thu
---------------------------
Job1 Job2
Sun Mon Tue Wed Thu
---------------------------
Job3 Job4 Job5
..........
答案1
这样的计划无法用 Bacula 的 Schedule 资源语法来表达。
你可以通过调度来近似计算
- 第一个星期日和第三个星期日的工作1
- 第 1 个星期一和第 3 个星期一的工作 2
- 第二个星期二和第四个星期二的工作3
- 第二个星期三和第四个星期三的 Job4
- 第二个星期四和第四个星期四的工作5
这将导致您所需的计划应用于每个月的第 1 天至 28 天,同时跳过剩余的天数(最坏的情况是第 29 天至 31 天)而不运行任何操作。
如果这还不够好,您可以使用 Run Before Job 来修改计划,因为如果 Run Before Job 返回错误,则作业本身不会运行。要实现这一点:
- 在各自的工作日安排工作,不受周数限制
- 创建两个 shell 脚本“even-week”和“odd-week”,分别在一周内返回成功和失败,在下一周返回相反的结果,依此类推
- 向 Job1 和 Job2 添加指令“Run Before Job = odd-week”,向 Job3、Job4 和 Job5 添加指令“Run Before Job = even-week”
因此,例如,Job1 将被安排在每个星期日,但只有在奇数周返回成功时才真正运行,即仅在第 1、3、5 周等等。
编写实际脚本留给读者作为练习。:-)