使用Cron在每三周的星期一运行任务

38次阅读
没有评论

问题描述

需要使用Cron来安排三个不同的脚本定期运行。他希望这些脚本每三周的星期一中午运行一次。他需要三个Cron语句来分别分配给这三个脚本。用户已经找到了一个在每三周的星期六运行的Cron语句,但不确定如何修改以满足自己的需求。此外,用户正在使用这个Cron语句来从GitLab计划中启动一个GitLab作业,而GitLab只接受Cron参数来设置作业的运行时间。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

要在每三周的星期一中午运行脚本,可以使用以下Cron语句:

0 12 * * 1 [ $(($(date +\%s) / (3600 * 24 * 7 * 3))) -eq $((($(date -d "2022-01-01" +\%s) / (3600 * 24 * 7 * 3)) + 1)) ] && /path/to/script1
0 12 * * 1 [ $(($(date +\%s) / (3600 * 24 * 7 * 3))) -eq $((($(date -d "2022-01-01" +\%s) / (3600 * 24 * 7 * 3)) + 2)) ] && /path/to/script2
0 12 * * 1 [ $(($(date +\%s) / (3600 * 24 * 7 * 3))) -eq $((($(date -d "2022-01-01" +\%s) / (3600 * 24 * 7 * 3)) + 3)) ] && /path/to/script3

上述Cron语句中的/path/to/script1/path/to/script2/path/to/script3分别代表你的三个脚本的路径。这些语句使用了日期计算来确定是否应该运行脚本。请注意,这些语句假设你的系统的日期和时间设置正确,并且你的系统上安装了date命令。

方案2

使用Cron的@reboot特殊字符串可以在系统启动时运行脚本。但是,这种方法不会考虑到每三周的星期一的要求。因此,方案1是更适合的解决方案。

方案3

如果你的系统上安装了anacron,你可以使用它来运行每三周的星期一的脚本。anacron是一个用于在系统启动时运行延迟任务的工具。你可以创建一个anacrontab文件来配置每三周的星期一运行脚本。以下是一个示例anacrontab文件的内容:

# /etc/anacrontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

1 0 myjob /path/to/script1
1 0 myjob /path/to/script2
1 0 myjob /path/to/script3

上述示例中的/path/to/script1/path/to/script2/path/to/script3分别代表你的三个脚本的路径。这些语句将在每三周的星期一运行脚本。请注意,你需要将myjob替换为你自己的作业名称。

请注意,anacron默认情况下在系统启动时运行,但也可以通过anacron命令手动运行。

以上是使用Cron在每三周的星期一中午运行脚本的解决方案。根据你的需求选择适合你的方案,并将相应的脚本路径替换为你自己的脚本路径。

正文完