Linux 定时任务 crontab 配置方法

2次阅读

crontab是linux管理周期性任务的核心工具,需确保格式正确(分时日月周+命令)、权限合理、环境清晰;时间字段范围明确,命令建议用绝对路径;支持*、,、-、/等特殊符号;用户用crontab -e编辑,root可指定-u;执行环境为minimal shell,需显式声明path等变量并重定向日志;可通过临时设近时间、查服务状态和日志调试。

Linux 定时任务 crontab 配置方法

Linux 的 crontab 是管理周期性任务的核心工具,配置关键在于格式正确、权限合理、环境清晰。

crontab 基本语法与字段含义

每行一条任务,格式为:
分 时 日 月 周 命令
共 6 个字段(前 5 个是时间控制,第 6 个是待执行的命令)。

  • 分:0–59
  • 时:0–23
  • 日:1–31
  • 月:1–12
  • 周:0–7(0 和 7 都表示周日)
  • 命令:建议写绝对路径(如 /usr/bin/python3 而非 python3

特殊符号常用:*(任意值)、,(列举多个)、-(范围)、/(步长,如 */10 表示每 10 分钟)。

编辑与管理用户 crontab

普通用户用 crontab -e 编辑自己的定时任务;root 用户可编辑系统级任务或他人任务(需加 -u 用户名)。

  • 保存退出后自动加载,无需重启服务
  • 查看当前任务: crontab -l
  • 清空所有任务: crontab -e 后删除全部内容并保存,或运行 crontab -r(慎用)
  • 编辑时默认调用系统默认编辑器(通常是 vi),可临时指定: export EDITOR=nano && crontab -e

注意执行环境与常见陷阱

crond 启动时加载的是 minimal shell 环境(通常为 /bin/sh),不读取 ~/.bashrc/etc/profile,所以:

  • 命令中用到的程序尽量写绝对路径(可用 which xxx 查找)
  • 若需特定环境变量(如 PATH、HOME、PYTHONPATH),应在 crontab 文件顶部显式声明,例如:
    PATH=/usr/local/bin:/usr/bin:/bin<br>   HOME=/home/username<br>   */5 * * * * /home/username/script.sh
  • 输出默认发给本地用户,建议重定向日志,便于排查:
    0 2 * * * /backup.sh >> /var/log/backup.log 2>&1

验证与调试技巧

新添加任务后不会立即生效,但会在下一个匹配时间点触发。快速验证方法:

  • 把时间设为 1–2 分钟后(如当前 10:23,设为 24 10 * * *),观察是否执行
  • 检查系统 cron 服务状态:systemctl status cronubuntu/debian)或 systemctl status crondcentos/RHEL)
  • 查看 cron 日志(需确认 rsyslog 已启用 cron 模块):grep CRON /var/log/syslog(Debian系)或 journalctl -u cron -n 20
  • 在脚本开头加入 date >> /tmp/cron-test.log,确认是否被调用

text=ZqhQzanResources