系统定时器不会触发

gol*_*cks 5 systemd systemd-timer

我有一个计时器,字面上是这样的:

foob​​ar.service:

[Unit]
Description=Timer Test
Requires=rsyslog.service      # rsyslog is an active local service.

[Service]
Type=simple
ExecStart=/usr/bin/logger "Running foobar timer test!"
Run Code Online (Sandbox Code Playgroud)

foob​​ar.timer:

[Unit]
Description=Test Timer

[Timer]
OnCalendar=10:00              # See below about the time.
Unit=foobar.service
RemainAfterElapse=no

[Install]
WantedBy=timers.target
Run Code Online (Sandbox Code Playgroud)

我通过在未来 10 分钟内安装它 ( systemctl enable foobar.timer) 来测试它OnCalendar。但是,它不会运行,并且:

> systemctl status foobar.timer
? foobar.timer - Local Daily Tasks Timer
   Loaded: loaded (/etc/systemd/system/what.timer; enabled; vendor preset: enabled)
   Active: inactive (dead)
  Trigger: n/a
Run Code Online (Sandbox Code Playgroud)

它声称已加载并启用,但不活动(已死)。这尤其令人困惑,因为我已经按照这种模式编写了其他计时器并且它们都可以工作...o_O?

除了重新启动系统(我不喜欢这样做,它是一个活动服务器)之外,我已经完成了所有工作。

gol*_*cks 5

除了重新启动系统,我已经完成了所有工作

哪个会起作用。否则,您必须:

  • 显式启动计时器: systemctl start foobar.timer
  • 或者重启定时器目标: systemctl restart timers.target

systemctl status现在将显示foobar.timer为“活动(等待)”。

根据 don_crissti 的评论,启用计时器--now也有效:

systemctl enable --now foobar.timer
Run Code Online (Sandbox Code Playgroud)