在 Debian(以及大多数 Linux 发行版)中,crontab 用来定时执行任务(类似于 Windows 的计划任务)。下面从基础到常用示例一步步说明。
cron:后台服务,负责按计划执行任务crontab:用户用来管理自己定时任务的命令crontab -e
第一次使用会让你选择编辑器(推荐 nano 或 vim)
crontab -l
crontab -r
crontab -u username -e
每一行格式如下:
分 时 日 月 星期 命令
| 字段 | 含义 | 范围 |
|---|---|---|
| 分 | 分钟 | 0–59 |
| 时 | 小时 | 0–23 |
| 日 | 日期 | 1–31 |
| 月 | 月份 | 1–12 |
| 星期 | 星期几 | 0–7(0 和 7 都是周日) |
* * * * * /home/user/test.sh
0 2 * * * /home/user/backup.sh
*/5 * * * * /home/user/check.sh
0 7 * * 1 /home/user/weekly.sh
0 0 1 * * /home/user/month.sh
默认 cron 执行结果会通过邮件发给用户(通常没配置邮件就看不到)
0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
cron 的环境非常干净,不会加载你的 .bashrc
常见问题:
python 找不到PATH 不对✅ 建议写绝对路径:
0 2 * * * /usr/bin/python3 /home/user/a.py
或手动设置环境变量:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
/etc/cron.daily/
/etc/cron.hourly/
/etc/cron.weekly/
/etc/cron.monthly/
放入脚本即可自动执行(无需 crontab)
systemctl status cron
启动 / 重启:
sudo systemctl start cron
sudo systemctl enable cron
手动执行命令,确认没问题:
/home/user/test.sh
查看 cron 日志(Debian):
grep cron /var/log/syslog
如果你愿意,可以告诉我:
我可以直接帮你写一条可用的 crontab 配置。