# cron 与 crontab

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

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，且不会进行提示。
- 在安排计划任务之前，请使用相同的用户手动测试该命令。

## 资料来源

- [crontab(5)](https://man7.org/linux/man-pages/man5/crontab.5.html)
- [crontab(5) (Debian)](https://manpages.debian.org/bookworm/cron/crontab.5.en.html)
- [systemd.timer(5)](https://man7.org/linux/man-pages/man5/systemd.timer.5.html)

最后更新: 2026-10-08
URL: https://raincleaner.eu/zh/wiki/linux/cron
