Linux crontab 定时任务完全指南——让服务器自动干活
运维就该懒一点——能用定时任务自动干的,就别亲自登录服务器。
什么是 crontab?
Linux 下的定时任务工具。每天固定时间帮你执行脚本、清理日志、备份数据。
基本用法
crontab -e # 编辑定时任务
crontab -l # 查看当前任务
crontab -r # 删除所有任务时间格式
分 时 日 月 周 要执行的命令
* * * * * command| 字段 | 取值范围 |
|---|---|
| 分 | 0-59 |
| 时 | 0-23 |
| 日 | 1-31 |
| 月 | 1-12 |
| 周 | 0-7(0和7都表示周日) |
常用例子
每天凌晨 2 点清理日志:
0 2 * * * /root/scripts/clean-logs.sh每 10 分钟检查服务是否存活:
*/10 * * * * /root/scripts/check-services.sh每周一早上 8 点备份数据库:
0 8 * * 1 /root/scripts/backup-db.sh每月 1 号凌晨 3 点生成报表:
0 3 1 * * /root/scripts/gen-report.sh三个实用场景
1. 日志自动清理
0 3 * * * find /var/log -name "*.log" -mtime +30 -delete每天晚上 3 点删除 30 天前的日志。
2. 自动备份
0 4 * * 0 tar -czf /backup/www_$(date +\\%Y\\%m\\%d).tar.gz /var/www每周日凌晨 4 点打包备份网站。注意 crontab 里 % 要用反斜杠转义。
3. 监控磁盘
*/30 * * * * df -h | mail -s "disk usage" admin@example.com每半小时把磁盘用量发到邮箱。
注意事项
- 路径要用绝对路径 —— crontab 默认 PATH 很短,写脚本路径时写全
输出重定向 —— 不加重定向的话,命令输出会发邮件给你
2 * /script.sh > /dev/null 2>&1
日志记录 —— 建议把输出记到文件方便排查
2 * /script.sh >> /var/log/cron-script.log 2>&1
- 环境变量 —— crontab 环境跟登录 shell 不一样,脚本里需要 source ~/.bashrc 或者写全环境变量
排错
定时任务没执行?检查:
# 看 cron 服务在不在跑
systemctl status crond
# 看日志
grep CRON /var/log/cron总结
刚学会用 crontab,先把"每天备份"和"日志清理"两个任务配起来。能把重复性工作自动化掉,运维才像个运维。
评论