我正在尝试创建一个每 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
,这是服务的默认模式。