Linux crontab 定时任务入门:让脚本自己准点跑起来
【摘要】 服务器上总有些事要重复做:每天备份日志、每小时清理临时文件、每周拉取一次数据。手动执行既麻烦又容易忘,Linux 自带的 cron 就是干这个的。 一、基本用法输入 crontab -e 编辑当前用户的定时任务,crontab -l 查看,crontab -r 删除全部(慎用)。每一行是一条任务:分 时 日 月 周 命令五个字段依次是分钟(0-59)、小时(0-23)、日(1-31)、月(1...
服务器上总有些事要重复做:每天备份日志、每小时清理临时文件、每周拉取一次数据。手动执行既麻烦又容易忘,Linux 自带的 cron 就是干这个的。
一、基本用法
输入 crontab -e 编辑当前用户的定时任务,crontab -l 查看,crontab -r 删除全部(慎用)。每一行是一条任务:
分 时 日 月 周 命令
五个字段依次是分钟(0-59)、小时(0-23)、日(1-31)、月(1-12)、星期(0-7,0 和 7 都是周日)。* 表示任意,*/5 表示每隔 5,1,15 表示列举,1-5 表示范围。
二、几个常见例子
- 每天凌晨 2 点备份:
0 2 * * * /home/user/backup.sh - 每 10 分钟执行一次:
*/10 * * * * /home/user/check.sh - 工作日早上 9 点半:
30 9 * * 1-5 /home/user/report.sh - 每月 1 号零点:
0 0 1 * * /home/user/monthly.sh
三、新手最容易踩的坑
- 环境变量不同。cron 的 PATH 很精简,在终端能跑的命令在 cron 里可能找不到。解决办法:脚本里写绝对路径,或在 crontab 顶部加一行
PATH=/usr/local/bin:/usr/bin:/bin。 - 没有输出,不知道成没成功。建议把输出重定向到日志:
0 2 * * * /home/user/backup.sh >> /home/user/backup.log 2>&1。出错时翻日志一目了然。 - 脚本没有执行权限。记得
chmod +x backup.sh,脚本第一行写#!/bin/bash。 - 百分号要转义。crontab 里
%有特殊含义,比如date +%F要写成date +\%F。 - 时区。cron 按系统时区执行,用
timedatectl确认服务器时区,避免“凌晨 2 点”其实是别人的下午。
四、怎么调试
先在命令行手动运行脚本确认没问题;再临时改成每分钟执行 * * * * *,看日志有没有输出;确认无误后改回正式时间。也可以查看系统日志 grep CRON /var/log/syslog(CentOS 系在 /var/log/cron)确认任务是否被触发。
五、小结
cron 语法只有五个时间字段加一条命令,学一次受用很久。记住三件事:用绝对路径、重定向日志、先手动测试。把重复的运维动作交给 cron,你就能把时间花在更有价值的事情上。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)