温馨提示×

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 + GrafanaZabbix 等,可采集日志、进程存活与自定义指标并设置告警规则

四 快速排查清单

  • 定时器未触发
    • 确认 .timer 已启动并启用:systemctl is-active my-timer.timersystemctl 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=

0