You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Cron job实现两个Linux脚本按天交替运行?

Cron定时交替运行两个脚本的实现方法

核心逻辑是通过判断当前日期对应的天数奇偶性,决定当天运行哪个脚本,共有两种常用实现方案:

方案1:直接在crontab中配置(无需额外写脚本)

如果你不需要复杂的额外逻辑,可以直接把判断条件写在crontab规则里,示例是每天凌晨2点交替执行两个脚本:

# 奇数天运行脚本1,偶数天运行脚本2,%在crontab中为特殊字符需要加反斜杠转义
0 2 * * * [ $(( $(date +\%d) % 2 )) -eq 1 ] && /绝对路径/到/你的/脚本1.sh
0 2 * * * [ $(( $(date +\%d) % 2 )) -eq 0 ] && /绝对路径/到/你的/脚本2.sh

如果要避免跨月/跨年时出现连续两天同奇偶的问题,把date +\%d替换为$(( $(date +\%s) / 86400 ))即可,该值为从1970年1月1日开始计算的累计天数,不会出现连续两天奇偶性相同的情况,可实现完全严格的隔日交替。

方案2:封装独立调度脚本(更易维护)

如果后续需要调整逻辑、加日志等操作,建议单独写一个调度脚本,步骤如下:

  1. 新建调度脚本toggle_scheduler.sh,内容如下:
#!/bin/bash
# 填写两个脚本的绝对路径
SCRIPT1="/opt/scripts/your_first_script.sh"
SCRIPT2="/opt/scripts/your_second_script.sh"

# 计算累计天数判断奇偶
total_days=$(( $(date +%s) / 86400 ))
if [ $(( total_days % 2 )) -eq 1 ]; then
    # 奇数天运行脚本1
    bash "$SCRIPT1"
else
    # 偶数天运行脚本2
    bash "$SCRIPT2"
fi
  1. 给调度脚本加执行权限:
    chmod +x /opt/scripts/toggle_scheduler.sh
  2. 在crontab中添加单条定时规则即可:
0 2 * * * /opt/scripts/toggle_scheduler.sh >> /var/log/toggle_scheduler.log 2>&1

注意事项

  • 所有脚本路径必须填写绝对路径,避免cron执行时因工作目录异常找不到文件
  • 若脚本依赖特定环境变量,可在调度脚本开头先加载对应环境变量配置(比如source /etc/profile)
  • 建议加日志输出配置,方便后续排查执行异常问题

内容的提问来源于stack exchange,提问作者Kerolos Youssef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 14:36:05