Поясните пожалуйста по написанию сервисов. Не понимаю как добиться работоспособности сервисов созданных и запущенных от пользователя.
Создал два файла сервиса в папке пользователя ~./config/systemd/system/user/
lock_screen_when_lid_close@.service
[Unit]
Description=i3lock on suspend
Before=sleep.target
[Service]
User=%i
Environment=DISPLAY=:0
Type=oneshot
ExecStart=/usr/bin/pkill picom
ExecStart=/usr/bin/bash %h/.config/i3/scripts/i3lock.sh
TimeoutSec=10
[Install]
WantedBy=sleep.target
picom_start@.service
[Unit]
Description=Picom start after sleep
After=sleep.target
[Service]
User=%i
Type=forking
Environment=DISPLAY=:0
ExecStart=/usr/bin/picom -r15 -b
[Install]
WantedBy=sleep.target
Всё, что прописано после ExecStart спокойно выполняется с правами пользователя.
Создал юниты и перезагрузил
systemctl --user enable lock_screen_when_lid_close@dima.service
systemctl --user enable picom_start@dima.service
systemctl --user daemon-reload
Пробовал запускать сервисы после этого, но не запускается, по запросу status кажет ошибки. Что в ошиках боле менее понятно, но неясно почему такие ошибки и как исправить.
$ systemctl –user status lock_screen_when_lid_close@dima.service
● lock_screen_when_lid_close@dima.service - i3lock on suspend
Loaded: loaded (/home/dima/.config/systemd/user/lock_screen_when_lid_close@.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2020-01-01 09:03:55 MSK; 4min 52s ago
Main PID: 24414 (code=exited, status=216/GROUP)
янв 01 09:03:55 ARCH systemd[1231]: Starting i3lock on suspend...
янв 01 09:03:55 ARCH systemd[24414]: lock_screen_when_lid_close@dima.service: Failed to determine supplementary groups: Operation not permitted
янв 01 09:03:55 ARCH systemd[24414]: lock_screen_when_lid_close@dima.service: Failed at step GROUP spawning /usr/bin/pkill: Operation not permit>
янв 01 09:03:55 ARCH systemd[1231]: lock_screen_when_lid_close@dima.service: Main process exited, code=exited, status=216/GROUP
янв 01 09:03:55 ARCH systemd[1231]: lock_screen_when_lid_close@dima.service: Failed with result 'exit-code'.
янв 01 09:03:55 ARCH systemd[1231]: Failed to start i3lock on suspend.
$ systemctl –user status picom_start@dima.service
● picom_start@dima.service - Picom start after sleep
Loaded: loaded (/home/dima/.config/systemd/user/picom_start@.service; enabled; vendor preset: enabled)
Active: inactive (dead)
Эти же сервисные файлы расположенные в /etc/systemd/system/
работают, но нестабильно. Бывает сервис не срабатывает. Кроме того сервис lock_screen_when_lid_close@dima.service
пытается выполнить строку запуска от root
ExecStart=/usr/bin/bash %h/.config/i3/scripts/i3lock.sh
Но юнит был создан для пользователя systemctl enable lock_screen_when_lid_close@dima.service
Если прописать явно имя пользователя и команду запуска i3lock вместо скрипта, то срока отрабатывает нормально.