Systemd服务不工作

Systemd服务不工作

我正在尝试创建一个每 60 分钟向我发送一次通知的服务,我制作了一个 bash 脚本来执行此操作hourly.sh,我知道它可以正常工作,因为我可以使用 运行它./hourly.sh,然后我尝试制作一个timer以便运行这个脚本每 60 分钟运行一次,但由于某种未知的原因,它不起作用。我从以下开始systemctl start hourlynotif.timer:这是我的代码:

hourlynotif.service

[Unit]
Description=Hourly notifier with notify-send

[Service]
Type=oneshot
ExecStart=/etc/systemd/system/hourly.sh

[Install]
WantedBy=multi-user.target

只是一个注意事项:我添加了一行[Install]来尝试将其作为没有计时器的服务运行(因为如果它作为计时器运行,则不需要 [Install] 标签),只是为了测试它,但没有任何改变

hourlynotif.timer

[Unit]
Description=Hourly notifier with notify-send

[Timer]
#OnCalendar=hourly
OnActiveSec=1

[Install]
WantedBy=timers.target

我知道计时器正在按预期工作,因为systemctl list-timers --all将我的计时器列为“已通过”,这是输出:(不是每小时一次,因为我将其编辑为在开始测试后运行 1 秒)

NEXT                         LEFT     LAST                         PASSED       UNIT                         ACTIVATES

n/a                          n/a      Thu 2017-08-31 05:21:54 CST  6s ago       hourlynotif.timer            hourlynotif.service

有任何想法吗?

编辑:bash 脚本依赖于通知发送,而通知发送依赖于要显示的 KDE 通知小部件。如果我 sudo 脚本,它不会触发通知,所以我认为我需要以我登录的用户身份运行脚本。

答案1

问题是我没有使用 运行它systemctl --user start <unit>,我只是使用systemctl start <unit>. bash 脚本依赖于用户特定的 KDE 内容,因此运行该脚本不起作用sudo,这是服务的默认模式。

相关内容