系统是:Ubuntu 16.04。
~/.config/systemd/user/mpd.timer
[Unit]
Description=mpd timer
[Timer]
OnCalendar=minutely
Persistent=true
[Install]
WantedBy=default.target
~/.config/systemd/user/mpd.service
[Unit]
Description=mpd
[Service]
ExecStart=/home/redacted/temp/mpd-service/mpd.sh
Type=oneshot
运行:systemctl --user start mpd.timer
,服务成功运行,并在 下列出systemctl --user list-timers
。
运行:systemctl --user enable mpd.timer
,在中创建了一个符号链接~/.config/systemd/user/default.target.wants
。
重启后systemctl --user enable mpd.timer
显示为空。还尝试了timers.target
for WantedBy
of mpd.timer
。结果是一样的。
运行:systemctl --user --type=target --all
,显示default.target
并timers.target
已加载且处于活动状态。
已尝试:systemctl --user daemon-reload
。
尝试过:sudo loginctl enable-linger redacted
。运行过:loginctl show-user redacted
。显示过:Linger=yes
。结果是一样的。
我搜索过类似的问题,但找不到其他可以尝试的方法。
答案1
我认为您的设置可能没有问题,只是对 systemd 的工作方式存在误解。如果您两次启用一个单元,systemctl 将不会在第二次显示任何输出,因为它已经创建了符号链接,它不会告诉您它已启用
您可以检查计时器是否已启用、是否已启动并正在运行systemctl --user status mpd.timer
。
第一行打印名称和说明,第二行(以 开头的行Loaded:
)告诉您文件的位置以及是否已启用,第三行(Active:
)告诉您它是否处于活动状态(正在运行)以及从何时开始。它还应该告诉您是否有错误或失败。
参见https://www.freedesktop.org/software/systemd/man/systemctl.html
更新:抱歉,我对于徘徊的看法是错误的。