crontab 是 Linux 用户级定时任务管理工具,通过文本格式定义时间规则(分、时、日、月、周)和命令,需用 crontab -e/-l/-r 操作,注意环境变量、绝对路径、输出重定向及系统级任务差异。

在 Linux 中,crontab 是管理用户级定时任务最常用的方式。它通过一个简单的文本格式定义任务执行时间,由 cron 后台服务读取并按时触发。
查看和编辑自己的 crontab
每个用户都有独立的 crontab 文件,不建议直接编辑 /var/spool/cron/ 下的文件,应使用 crontab 命令操作:
-
crontab -e:编辑当前用户的定时任务(首次运行会提示选择编辑器) -
crontab -l:列出当前所有已设置的任务 -
crontab -r:删除所有任务(谨慎使用)
理解 crontab 时间格式
每条任务以一行表示,前 5 个字段是时间规则,第 6 字段起是实际要执行的命令:
分 时 日 月 周 命令各字段取值范围和含义如下:
-
分:0–59(如
30表示第 30 分钟) -
时:0–23(如
9表示上午 9 点) - 日:1–31(每月第几天)
-
月:1–12(如
*/2表示每两个月) - 周:0–7(0 和 7 都代表周日,1 是周一)
支持符号:*(任意值)、,(列举多个)、-(范围)、*/n(每 n 单位)。例如:
-
0 2 * * *:每天凌晨 2 点执行 -
30 9 * * 1-5:工作日早上 9:30 执行 -
*/10 * * * *:每 10 分钟执行一次
编写可靠的任务命令
crontab 中执行的命令默认在最小环境里运行,PATH、HOME 等变量可能与你终端中不同,容易导致脚本找不到命令或路径错误:
- 用绝对路径写命令,比如
/usr/bin/python3 /home/user/script.py - 必要时在命令前显式设置环境变量,如
PATH=/usr/local/bin:/usr/bin:/bin /path/to/script.sh - 重定向输出便于排查问题:
command >> /tmp/log.txt 2>&1 - 脚本开头加上
#!/bin/bash并确保有执行权限(chmod +x)
系统级定时任务与注意事项
如果需要所有用户都能访问或需 root 权限的任务,可编辑系统 crontab:/etc/crontab 或放入 /etc/cron.d/ 目录。注意其格式多一列“用户”:
其他要点:
- 修改后无需重启 cron 服务,保存即生效(cron 每分钟检查一次)
- 日志通常在
/var/log/syslog或/var/log/cron中,可用grep CRON /var/log/syslog查看 - 避免在 crontab 中写交互式命令(如
sudo提示输入密码),应提前配置免密或改用 systemd timer 处理复杂场景


















