下面是对 Linux 中 crontab 定时任务 的由浅入深介绍,涵盖从基本语法、使用方法到进阶应用。
一、什么是 crontab?
crontab 是 Linux 系统中的定时任务调度工具,可以让你在指定的时间周期自动执行命令或脚本。它非常适用于定时备份、日志清理、定期运行脚本等任务。
二、基础语法
crontab 的语法格式如下:
* * * * * command
| | | | |
| | | | └── 星期几(0-7)(0 和 7 都代表星期日)
| | | └──── 月份(1-12)
| | └────── 每月第几天(1-31)
| └──────── 小时(0-23)
└────────── 分钟(0-59)示例:
30 2 * * * /home/user/backup.sh每天凌晨 2 点 30 分执行
/home/user/backup.sh
三、基本命令
查看当前用户的定时任务:
crontab -l编辑当前用户的定时任务:
crontab -e删除当前用户的定时任务:
crontab -r
四、特殊时间字符串(简化语法)
crontab 支持以下快捷表达方式:
示例:
@daily /usr/bin/python3 /home/user/daily_report.py每天运行
daily_report.py
五、进阶语法和技巧
1. 多个值用逗号隔开:
0 8,12,18 * * * /home/user/send_report.sh每天的 8、12、18 点运行
2. 指定范围:
0 9-17 * * 1-5 /home/user/work_hours.sh每周一到周五的 9 点到 17 点整点运行
3. 每隔一段时间:
*/15 * * * * /home/user/check_status.sh每 15 分钟运行一次
4. 输出重定向(记录日志):
0 1 * * * /home/user/cleanup.sh >> /home/user/cleanup.log 2>&1六、注意事项
环境变量限制
Crontab 默认不会加载用户的 bash 环境变量,例如 PATH,所以建议脚本中显式指定绝对路径。输出调试
如果任务没有按预期执行,可加日志或邮件通知,或者重定向输出以查看错误原因。执行权限
脚本必须具有可执行权限,例如chmod +x script.sh用户级与系统级
crontab -e修改当前用户的任务/etc/crontab是系统级任务文件,还可指定用户字段
七、示例:定时备份网站目录
0 3 * * * tar -czf /backup/www-$(date +\%F).tar.gz /var/www/html每天凌晨 3 点自动备份网站目录到
/backup,文件名带日期。