《Linux 定时任务 crontab》

《Linux 定时任务 crontab》

crontab 是 Linux 最常用的定时任务工具。本文包含安装与启动、常用表达式、文件位置与排障。(mac 的定时任务见《crontab/launchctl 定时任务(macOS)》)

1 安装(以 Debian 为例)

# 编辑 sources.list(如使用大陆镜像参考《Debian/Ubuntu 镜像源配置》) apt update apt-get install cron # 启动 / 查看状态 /etc/init.d/cron start /etc/init.d/cron status # 或使用 service service cron start service cron status

2 常用表达式

# 每分钟执行一次(追加时间戳日志) */1 * * * * echo "`date`" >> /tmp/xx.log # 每天 10 点执行脚本 0 10 * * * /opt/auto-sync.sh # 每周一 9 点 0 9 * * 1 /opt/report.sh # 每月 1 日 3 点 0 3 1 * * /opt/cleanup.sh

cron 表达式格式:分 时 日 月 星期 命令。

常用写法:

  • */n 每隔 n 个单位
  • 0,15,30,45 枚举时间点
  • 1-5 区间

3 编辑与文件位置

crontab -e # 编辑当前用户任务(默认编辑器可在 ~/.bashrc 设置 VISUAL/EDITOR=vim) crontab -l # 查看 crontab -r # 删除全部

任务文件实际落地路径:

/var/spool/cron/$USER # Debian 等大多数发行版 # root 用户为 /var/spool/cron/root

人为修改该文件可临时屏蔽某条任务(在目标行前加 #)。

4 排障

  • 任务没执行:先确认 cron 服务在运行(service cron status)。
  • 确认语法/时间:在线 cron 校验工具(如 bejson)或 man 5 crontab。
  • 脚本没输出:cron 环境变量极少,脚本内尽量使用绝对路径,并在脚本头部 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin。
  • 看日志:Debian 的 /var/log/syslog 或 journalctl -u cron。

5 参考资料

  • crontab 手册:man 5 crontab
  • linux-tools-rst 专栏(crontab)
阅读 — · 全站 —
🎸 我的歌单 0 首