Linux周期性任务cron
Linux下的 周期性任务 一般是通过 cron 服务来实现的。cron 是一个守护进程,负责在预设的时间周期性地执行任务(如脚本、命令)。
1. cron 服务
守护进程名:
crond配置文件:
- 用户级:
crontab -e(存放在/var/spool/cron/用户名) - 系统级:
/etc/crontab、/etc/cron.d/、/etc/cron.daily/等
- 用户级:
服务管理:
1 | # 启动 |
2. crontab 语法
基本格式:
分 时 日 月 周 命令
字段说明:
| 字段 | 取值范围 | 说明 |
|---|---|---|
| 分 | 0–59 | 分钟 |
| 时 | 0–23 | 小时 |
| 日 | 1–31 | 日期 |
| 月 | 1–12 | 月份 |
| 周 | 0–7 | 星期 (0 和 7 都表示星期天) |
特殊符号:
*:任意取值,:列举多个值(如1,15表示第 1 和第 15 分钟)-:范围(如1-5表示 1 到 5 分钟)/:步长(如*/5表示每 5 分钟)
3. 示例
1 | # 每天凌晨 2 点执行备份脚本 |
4. 常见用法
编辑当前用户的定时任务:
1
crontab -e
查看当前用户的定时任务:
1
crontab -l
删除当前用户所有定时任务:
1
crontab -r
5. 日志与排错
任务执行日志一般记录在:
1
/var/log/cron
命令输出(stdout/stderr)默认不会记录,需手动重定向:
1
*/10 * * * * /usr/local/bin/task.sh >> /var/log/task.log 2>&1
6. 系统级周期性目录
系统还提供了以下目录,用来存放 脚本文件(而不是 crontab 配置):
/etc/cron.hourly/→ 每小时执行/etc/cron.daily/→ 每天执行/etc/cron.weekly/→ 每周执行/etc/cron.monthly/→ 每月执行
放入这些目录的脚本会由 /etc/crontab 中的 run-parts 调度。