в каталоге ~/.config/systemd/user/ создать файл mysckript.service
[Unit]
Description =описание скрипта
After=graphical-session.target
BindsTo=graphical-session.target
PartOf=graphical-session.target
Requisite=graphical-session.target
#ConditionEnvironment=DISPLAY # установить эти переменные, если не срабатывает
#ConditionEnvironment=XAUTHORITY
[Service]
ExecStart=~/my_scripts/mysckript.sh # скрипт, который должен быть выполнен
Type=oneshot # сервис должен выполнить разовую задачу и завершиться
[Install]
WantedBy=graphical-session.target # устанавливает запуск при загрузке графической сессии
для проверки юнита можно, но необязательно
systemctl --user daemon-reload
systemctl --user enable --now mysckript.service
создать файл ~/.config/systemd/user/mysckript.timer
[Unit]
Description=Таймер для периодического запуска myscript.service
[Timer]
OnStartupSec=5min #Время срабатывания таймера определяется относительно первого запуска менеджера служб пользователя, т.е. после входа пользователя в систему (если не задать, то таймер надо активировать первый раз вручную)
OnUnitActiveSec=5min # Время срабатывания таймера задаётся относительно того времени, когда таймер, который должен быть активирован, был активирован в последний раз
[Install]
WantedBy=timers.target
от юзера!!!
systemctl --user daemon-reload
systemctl --user enable --now myscript.service myscript.timer
проверка
systemctl --user list-timers
Если все правильно, выходные данные должны показать, что служба только что прошла PASSED , а сумма LEFT должна примерно соответствовать первоначально установленному периоду. Если он установлен неправильно, вы можете увидеть, что ваш таймер неактивен в выходных данных.
$ systemctl --user list-timers --all
Если это произойдет, просмотрите сообщения об ошибках или поищите помощь в Интернете.
https://habr.com/ru/companies/ruvds/articles/512868/
При использовании OnCalendar= для настройки таймеров используется следующий базовый формат для указания даты и времени:
DOW YYYY-MM-DD HH:MM:SS
DOW (Day Of Week, день недели), это необязательная часть вышеприведённой конструкции. В других полях можно использовать символ звёздочки (*), символизирующий любое значение, которое может находиться в занимаемой им позиции. Все формы указания даты и времени приводятся к нормализованной форме. Если время не указано, предполагается, что это — 00:00:00. Если дата не указана, а время указано, то таймер сработает либо в день его запуска (условно говоря, «сегодня»), либо на следующий день («завтра»). Это зависит от текущего времени. Для указания месяцев и дней недели могут использоваться их названия. Здесь можно использовать списки значений, разделяемые запятой. Диапазоны значений можно разделять тремя точками (…), которые ставят между начальным и конечным значением диапазона.
Веселиться :)