在Linux系统中,cron
是一个强大的定时任务管理工具,可以通过crontab
命令配置计划任务。以下是详细使用指南:
/var/log/cron
(CentOS/RHEL)或/var/log/syslog
(Ubuntu)命令 | 作用 |
---|---|
crontab -e |
编辑当前用户的任务(首次使用会选编辑器) |
crontab -l |
列出当前用户的任务 |
crontab -r |
删除所有任务(危险!建议先-l 备份) |
sudo crontab -u username -e |
编辑其他用户的任务(需root权限) |
* * * * * command_to_execute
│ │ │ │ │
│ │ │ │ └── 星期几 (0-7, 0和7都代表周日)
│ │ │ └──── 月份 (1-12)
│ │ └────── 日 (1-31)
│ └──────── 小时 (0-23)
└────────── 分钟 (0-59)
特殊符号:
- *
:任意值
- ,
:值列表(1,3,5
)
- -
:范围(1-5
)
- /
:步长(*/10
表示每10单位)
示例 | 说明 |
---|---|
0 3 * * * /backup.sh |
每天凌晨3点执行 |
*/15 * * * * /monitor.sh |
每15分钟执行 |
0 17 * * 1-5 /report.sh |
工作日每天17:00执行 |
@reboot /start_service.sh |
系统启动时执行 |
0 0 1 */3 * /clean_logs.sh |
每3个月的1号执行 |
cron执行环境与用户shell环境不同,建议:
- 脚本中使用绝对路径
- 在crontab开头声明环境变量:
bash
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=user@example.com # 接收执行报错的邮件
>> /tmp/cron.log 2>&1
重定向输出time
命令测试脚本执行时间:
```bash
/etc/crontab
bash
0 1 * * * root /path/to/system_script.sh
/etc/cron.d/
:多任务配置文件/etc/cron.hourly/
:每小时任务(实际由/etc/cron.d/0hourly
调用)/etc/cron.allow
(白名单)/etc/cron.deny
(黑名单)对于复杂任务调度,可以考虑:
- systemd timer
(现代Linux发行版)
- at
命令(一次性任务)
- anacron
(针对关机的服务器)
通过合理配置cron,可以实现自动化运维任务(如日志轮转、定期备份、监控检查等)。建议复杂脚本先在命令行测试通过后再添加到cron。