You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

systemd服务未被其关联timer单元按计划触发的故障咨询

systemd timer未按计划触发的常见原因
  • timer单元未启动或未启用
    仅执行systemctl daemon-reload不会自动激活timer单元,需执行sudo systemctl start myservice.timer手动启动,若要开机自动加载timer还需执行sudo systemctl enable myservice.timer。可执行systemctl list-timers --all查看timer的运行状态和下次触发时间。
  • 时区不匹配
    OnCalendar默认使用系统时区,若你配置的时间是本地时间但系统时区为UTC等其他时区,会导致触发时间和预期不符。可执行timedatectl查看系统时区,也可直接在规则中指定时区,例如OnCalendar=Asia/Shanghai *-*-* 10:33:00。
  • 服务单元类型配置不合理
    你给出的service配置未指定Type参数,默认值为simple,如果你的任务是单次执行的脚本,执行完成后进程退出,systemd会判定服务异常,或如果服务执行后处于active状态,timer默认不会重复触发已经激活的服务。针对定时执行的单次任务,建议在service的[Service]段添加配置:
    Type=oneshot
    RemainAfterExit=no
    
  • 配置时间已过无补触发规则
    若你修改OnCalendar配置并重载daemon的时间晚于配置的触发时间(例如10:40才配置当天10:33的触发规则),且未开启Persistent=true参数,timer不会补执行已经错过的任务,需要等待下一个周期的触发时间。
  • 配置语法或指向错误
    可执行systemd-analyze verify myservice.timer检查timer单元的语法合法性,同时确认[Timer]段的Unit参数值和实际服务单元文件名完全一致(大小写、后缀均需匹配)。也可执行systemctl show myservice.timer | grep NextTriggerTime查看解析后的下次触发时间是否符合预期。
  • 执行异常无日志
    可分别查看timer和服务的日志排查问题:
    # 查看timer日志
    journalctl -u myservice.timer -f
    # 查看服务日志
    journalctl -u myservice.service -f
    
    确认是否有触发记录、执行报错等信息。

内容的提问来源于stack exchange,提问作者pkaramol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:06:05