Я пытаюсь создать сервис, который отправляет мне уведомление каждые 60 минут, я создал сценарий bash, который делает это, под названием hourly.sh
, я знаю, что он работает, потому что я могу запустить его с ./ hourly.sh
], затем я попытался создать таймер
, чтобы запускать этот сценарий каждые 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 полагается on notify-send, который зависит от отображения виджета уведомлений KDE. Если я sudo скрипт, он не вызывает уведомление, поэтому я считаю, что мне нужно запустить скрипт с пользователем, с которым я вошел в систему.
Проблема заключалась в том, что я не запускал его с systemctl --user start
, я использовал просто systemctl start
. Сценарий bash основан на пользовательских материалах KDE, поэтому запуск сценария с sudo
не работал, что является режимом по умолчанию для служб.