ubuntu 定时器怎么监控
小樊
41
2025-11-14 16:19:05
Ubuntu 定时器监控实操指南
一 监控 Systemd 定时器
- 查看所有定时器与下次触发时间
- 列出所有定时器:systemctl list-timers --all
- 查看某个定时器详情:systemctl status my-timer.timer
- 查看执行日志与结果
- 服务单元日志:journalctl -u my-timer.service -b(加上 -f 实时跟踪)
- 若定时器设置了 Persistent=true,错过触发会在开机后补执行,可在日志中看到相应记录
- 常用控制与验证
- 启动/停止/重启:systemctl start|stop|restart my-timer.timer
- 使能开机启动:systemctl enable --now my-timer.timer
- 重新加载配置(新增/修改单元后):systemctl daemon-reload
- 实践要点
- 定时器由 .timer 文件驱动,真正执行的是同名的 .service 文件;监控时同时关注两者的状态与日志。
二 监控 Cron 定时任务
- 基本清单与日志
- 查看当前用户任务:crontab -l;编辑:crontab -e(系统级用 sudo crontab -e)
- 查看系统日志中的 cron 记录:grep CRON /var/log/syslog
- 将任务输出落盘便于审计
- 示例(标准输出与错误均重定向):0 3 * * * /path/to/myscript.sh >> /path/to/mylog.log 2>&1
- 若系统未记录 cron 日志
- 编辑 /etc/rsyslog.d/50-default.conf,取消注释:cron. /var/log/cron.log*
- 重启 rsyslog:sudo systemctl restart rsyslog,随后查看 /var/log/cron.log
- 一次性任务
- 查看待执行/历史任务:atq
- 查看任务内容:at -c <job_id>
三 日志与告警的实用做法
- 为脚本统一加上“执行标记 + 时间 + 退出码”
- 示例:/usr/local/bin/job.sh >> /var/log/job.log 2>&1
- 在脚本末尾记录:echo “$(date) exit=$?” >> /var/log/job.log
- 实时查看与回溯
- 实时跟踪:tail -f /var/log/job.log
- 结合 syslog/cron.log 回溯:grep “job.sh” /var/log/syslog
- 简单告警示例(每5分钟检查并重启服务)
- 监控脚本要点:用 pgrep mysqld 判断进程是否存在,不存在则 service mysqld start 并记录时间
- 加入定时:*/5 * * * * /usr/local/bin/check_mysql.sh >> /var/log/mysql_monitor.log 2>&1
- 可视化与集中监控
- 轻量查看:top/htop/vmstat/iostat/nmon
- 集中监控与告警:Prometheus + Grafana、Zabbix 等,可采集日志、进程存活与自定义指标并设置告警规则
四 快速排查清单
- 定时器未触发
- 确认 .timer 已启动并启用:systemctl is-active my-timer.timer、systemctl is-enabled my-timer.timer
- 查看下次触发:systemctl list-timers
- 服务执行失败
- 查看服务日志:journalctl -u my-timer.service -b -e(定位报错行与退出码)
- Cron 无日志
- 检查 /var/log/syslog 中是否有 CRON 记录;如无,按上文启用 /var/log/cron.log
- 权限与路径问题
- 脚本使用绝对路径,并确保执行用户具备相应权限;必要时在 crontab 或 .service 中设置 User=