Rain Wiki · Linux

cron 与 crontab

cron 如何运行计划任务、五个 crontab 时间字段、系统 cron 文件的存放位置以及与 systemd 定时器的对比。

Linux · Rain Wiki

cron 是经典的 Unix 守护进程,用于按计划运行命令。每个用户都有一个通过 crontab -e 编辑的 crontab 文件,其中的每一行包含五个时间字段(分、时、日、月、星期),后跟要执行的命令。系统任务位于 /etc/crontab 和 /etc/cron.d/ 中。

时间字段

'30 2 * * *' 表示每天 02:30;'*/10 * * * *' 表示每十分钟;'0 9 * * 1' 表示每周一 09:00。星期字段中的 0 和 7 都表示星期日。

系统文件

/etc/cron.d/ 和 /etc/crontab 中的文件在时间和命令之间多了一个字段,即用户名。像 /etc/cron.daily 这样的目录则包含每天运行一次的脚本。

常见陷阱

cron 在极简的环境变量下运行:请使用完整路径或在 crontab 中设置 PATH。命令输出会被发送邮件给所有者或被丢弃;请将其重定向到日志文件。% 字符在 crontab 行中具有特殊含义,必须转义为 \%。

systemd 定时器

在使用 systemd 的发行版中,.timer 单元是一种替代方案,支持将日志记录到 journal、随机延迟以及补运行错过的任务(Persistent=true)。

如何添加每日任务

  1. 打开你的 crontab:crontab -e
  2. 添加一行,例如:30 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
  3. 保存并退出;cron 会自动加载更改。
  4. 列出任务:crontab -l

注意事项

  • 'crontab -r' 会直接删除整个 crontab,且不会进行提示。
  • 在安排计划任务之前,请使用相同的用户手动测试该命令。

资料来源

最后更新: 2026-10-08

相关文章