很多服务器维护工作并不需要每天手动执行,例如备份网站文件、清理缓存、检测服务状态和生成报表。Ubuntu 可以通过 Cron 定时任务自动完成这些重复操作。本篇教程介绍 crontab 的基本用法、时间格式、脚本执行和常见排查方法,帮助站长把日常维护流程自动化。
一、Cron 适合做什么
Cron 是 Linux 系统中常用的定时任务工具,Ubuntu 服务器也经常使用它来自动执行任务。
常见场景包括:
- 定时备份网站文件;
- 定时备份数据库;
- 定时清理缓存;
- 定时执行脚本;
- 定时生成报表;
- 定时检测服务状态。
对站长来说,Cron 的价值是把重复操作自动化。但定时任务一旦写错,也可能反复执行错误操作,所以配置前要先测试脚本。
二、编辑当前用户的 crontab
编辑当前用户定时任务:
crontab -e
查看当前用户定时任务:
crontab -l
第一次执行 crontab -e 时,系统可能会让你选择编辑器。新手可以选择较容易使用的编辑器。
Cron 常见格式是:
分钟 小时 日期 月份 星期 命令
例如每天凌晨 2 点执行:
0 2 * * * /path/to/script.sh
每 10 分钟执行一次:
*/10 * * * * /path/to/script.sh
三、先写一个可手动执行的脚本
不要一开始就把复杂命令塞进 crontab。更好的方式是先写脚本,再让 Cron 定时执行脚本。
例如创建脚本:
nano /home/ubuntu/backup.sh
脚本写好后,添加执行权限:
chmod +x /home/ubuntu/backup.sh
先手动执行:
/home/ubuntu/backup.sh
只有手动执行成功后,再加入定时任务。
四、定时任务要使用绝对路径
Cron 执行环境和你手动登录终端时不完全一样。很多任务手动执行正常,但放进 Cron 失败,原因是路径或环境变量不同。
建议:
- 命令使用绝对路径;
- 脚本路径使用绝对路径;
- 输出日志写到明确位置;
- 不依赖当前目录;
- 必要时在脚本里设置环境变量。
例如:
0 2 * * * /home/ubuntu/backup.sh >> /home/ubuntu/backup.log 2>&1
这样可以把执行输出写入日志,方便排查。
五、查看 Cron 是否执行
如果任务没有按预期执行,可以查看系统日志。不同 Ubuntu 环境日志位置可能不同,可以通过系统日志或 journalctl 检查 cron 相关记录。
常见排查方向包括:
- crontab 是否保存成功;
- 时间格式是否写错;
- 脚本是否有执行权限;
- 路径是否使用绝对路径;
- 脚本手动执行是否正常;
- 执行用户是否有权限;
- 系统时区是否正确。
如果怀疑是时区问题,可以结合本系列的 Ubuntu 时间同步教程检查。
六、定时备份要注意保留周期
很多站长会用 Cron 做自动备份,但只备份不清理也会造成磁盘爆满。
建议设置备份策略:
- 每天备份一次;
- 保留最近 7 天;
- 每周保留一个长期版本;
- 定期同步到其他存储位置;
- 定期测试能否恢复。
备份的重点不是“生成了文件”,而是“需要时能恢复”。如果从来没有测试过恢复,备份可靠性就无法确认。
七、修改定时任务后要记录
每次新增或修改 Cron 任务,都建议记录:
- 任务用途;
- 执行时间;
- 执行用户;
- 脚本路径;
- 日志路径;
- 最近一次验证结果。
服务器时间久了,定时任务可能越来越多。没有记录的话,后续很难判断某个脚本是否还能删除。
FAQ
Q1:Cron 任务手动执行成功,定时不执行怎么办?
A:重点检查路径、权限、环境变量、执行用户和日志输出。Cron 环境和手动终端环境不完全一样。
Q2:定时任务可以用相对路径吗?
A:不建议。最好使用绝对路径,避免 Cron 执行时找不到文件或目录。
Q3:自动备份是不是越多越好?
A:不是。备份要有保留周期和恢复验证,否则可能占满磁盘,还不能保证真正可用。

