在 Linux 系统中,crontab 是用来设置周期性执行任务的工具。通过它,我们可以让系统在特定时间自动运行 shell 脚本,完成备份、监控、清理等运维工作。下面介绍 crontab 定时执行脚本的具体写法。

crontab 时间格式说明
crontab 的每一行任务都由六个字段组成,前五个是时间设定,最后一个是执行的命令或脚本路径:
| 字段 | 含义 | 取值范围 |
|---|---|---|
| 分钟 | 每小时的第几分钟 | 0-59 |
| 小时 | 每天的第几小时 | 0-23 |
| 日 | 每月的第几天 | 1-31 |
| 月 | 每年的第几月 | 1-12 |
| 星期 | 每周的第几天 | 0-7(0和7均为周日) |
| 命令 | 要执行的脚本或命令 | 绝对路径 |
如何编写定时执行脚本的任务
使用 crontab -e 命令编辑当前用户的定时任务,添加如下格式的一行:
# 每天凌晨2点30分执行备份脚本 30 2 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1
上面例子中,/home/user/backup.sh 就是我们要定时执行的脚本。注意必须使用绝对路径,并且脚本需要有可执行权限。
给脚本添加执行权限
在终端中运行以下命令,确保脚本可以被 cron 调用:
chmod +x /home/user/backup.sh
脚本内容示例
一个简单的备份脚本可以写成这样:
#!/bin/bash # 每日备份网站目录 src_dir=/var/www/html dest_dir=/backup/www_$(date +%F).tar.gz tar -czf $dest_dir $src_dir echo "备份完成: $dest_dir"
常见注意事项
- cron 环境变量很少,脚本里尽量用绝对路径写命令,如
/usr/bin/tar。 - 时间字段中
*表示任意值,*/5表示每五个单位。 - 如果脚本依赖用户环境变量,可在脚本开头用
source ~/.bashrc加载。 - 查看任务执行情况可用
tail -f /var/log/cron(部分系统路径不同)。
查看与管理任务
列出当前用户的全部定时任务:
crontab -l
删除所有任务(谨慎操作):
crontab -r
建议把输出重定向到日志文件,方便排查脚本未执行或报错的问题。
小结
写好 crontab 定时脚本并不复杂,核心就是弄清五个时间字段、使用绝对路径、赋予脚本执行权限并做好日志输出。按照上述方法,就能稳定地在 Linux 上跑起各类自动化脚本。