CentOS 定时器使用教程
一 概览与选择
| 维度 | cron/crond | systemd Timer |
|---|---|---|
| 配置入口 | crontab -e、/etc/crontab、/etc/cron.d/ | .timer 与 .service 单元文件 |
| 最小粒度 | 1 分钟 | 可精确到秒级(OnCalendar/AccuracySec) |
| 日志与监控 | 查看 /var/log/cron | 使用 journalctl -u xxx.timer/.service |
| 适用场景 | 常规备份、清理、拉取脚本 | 需依赖顺序、失败重试、复杂日历规则 |
二 使用 cron 快速上手
rpm -q crontabs || yum install -y crontabsrpm -q cronie || dnf install -y croniesystemctl start crondsystemctl enable crondsystemctl status crond(应显示 active (running))crontab -e 编辑当前用户的计划任务crontab -l 列出当前用户的任务crontab -r 删除当前用户的全部任务(谨慎)crontab -u <用户> -e 编辑指定用户的任务(需管理员)分 时 日 月 周 命令(五个时间字段 + 命令)* 任意值;, 列表;- 范围;/ 步长(如 */10 每 10 单位)@reboot(开机运行)、@daily、@hourly 等15 3 * * * /bin/bash /home/user/myscript.sh >> /var/log/myscript.log 2>&1*/5 * * * * /usr/sbin/ntpdate -s time.example.com >> /var/log/ntp.log 2>&10 9 * * 1 /bin/rm -rf /tmp/old_* 2>/dev/nulltail -f /var/log/cron三 使用 systemd Timer 精确调度
[Unit]
Description=Daily Backup Task
[Service]
Type=oneshot
ExecStart=/usr/bin/bash /opt/scripts/backup.sh
[Unit]
Description=Run backup daily at 02:00
Requires=backup.service
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
systemctl daemon-reloadsystemctl enable --now backup.timersystemctl list-timers --allsystemctl status backup.timersystemctl stop|disable backup.timer四 常见问题与最佳实践
* * * * * /usr/bin/your_cmd* * * * * sleep 30 && /usr/bin/your_cmd>> /var/log/xxx.log 2>&1),便于排查。crontab -e。tail -f /var/log/cron 或 journalctl -u xxx.timer/.service 观察执行与报错。