插件窝 干货文章 如何在crontab中设置每月任务

如何在crontab中设置每月任务

执行 每月 crontab 任务 407    来源:    2025-05-10

在 Linux/Unix 系统中使用 crontab 设置每月任务时,可以通过调整时间字段来实现。以下是详细指南:


1. 基本语法

crontab 时间格式如下:

* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └── 星期 (0-6, 0=周日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日 (1-31)
│ └──────── 小时 (0-23)
└────────── 分钟 (0-59)

2. 设置每月任务示例

场景 1:每月第 1 天的 00:00 执行

0 0 1 * * /path/to/script.sh
  • 解释
    每月第 1 天的午夜执行脚本。

场景 2:每月 15 日下午 3:30 执行

30 15 15 * * /path/to/backup.py

场景 3:每月最后一天执行

0 0 L * * /path/to/cleanup.sh
  • 注意
    部分系统(如某些 Linux 发行版)支持 L 表示最后一天,若不支持需改用以下方式: bash 0 0 28-31 * * [ $(date +\%d -d tomorrow) -eq 1 ] && /path/to/cleanup.sh
    • 每天检查次日是否为下个月的第 1 天。

3. 高级用法

指定特定月份

0 0 1 1,6,12 * /path/to/report.sh
  • 解释
    仅在 1 月、6 月、12 月的第 1 天执行。

跳过周末(周六/周日)

0 9 1-7 * * [ $(date +\%u) -le 5 ] && /path/to/task.sh
  • 解释
    每月前 7 天中,仅在工作日(周一到周五)执行。

4. 操作步骤

  1. 编辑 crontabbash crontab -e
  2. 添加任务
    按示例格式写入任务,保存退出(Ctrl+XYEnter)。
  3. 查看任务bash crontab -l
  4. 日志检查
    任务执行日志通常位于 /var/log/syslogjournalctl -u cron

5. 注意事项

  • 环境变量
    cron 默认使用最小环境变量,建议在脚本中使用绝对路径或在 crontab 中设置 PATH
  • 权限问题
    确保脚本有可执行权限(chmod +x /path/to/script)。
  • 特殊字符转义
    % 需转义为 \%(如 date +\%d)。

6. 验证工具

推荐使用 Crontab Guru 在线验证时间表达式是否正确。

通过以上配置,你可以灵活控制每月任务的执行时间和频率。