Запуск службы systemd синхронно/на переднем плане

В /etc/systemd/logind.confесть настройка, которая сообщает systemd-logind, как обрабатывать событие переключения крышки ноутбука. Попробуйте установить HandleLidSwitch=ignoreи перезапустить systemd -logind.

И раскомментируйте -строку перед сохранением.

1
26.06.2020, 16:33
1 ответ

Наконец нашел несколько подходящих конфигураций:

a )Пометить работающую службу как StopWhenUnneededи использовать свойство Wantsсsystemd-run --scope:

.xsessionrc:

STARTUP='systemd-run --user --scope --property Wants=my.service sleep inf'

мой.сервис:

[Unit]
Description=My service
StopWhenUnneeded=yes

[Service]
Type=exec
ExecStart=/path/to/my/program
Restart=always

Это очень простое решение, которое выполняет все необходимые действия, однако запустить my.serviceвручную невозможно. При желании:

b )Ввести промежуточное звено my-session.targetи объявить my.serviceкакPartOf=my-session.target:

.xsessionrc:

STARTUP='systemd-run --user --scope --property Wants=my-session.target sleep inf'

мой.сервис:

[Unit]
Description=My service
PartOf=my-session.target

[Service]
Type=exec
ExecStart=/path/to/my/program
Restart=always

[Install]
WantedBy=my-session.target

мой -session.target:

[Unit]
Description=My session
StopWhenUnneeded=yes
RefuseManualStart=yes
RefuseManualStop=yes

c )Наконец, стоит отметить, что systemd-runне запрещает использование "только автоматических -" свойств, таких как BoundBy/ ConsistsOf, в результате можно сделать:

.xsessionrc

STARTUP='systemd-run --user --scope --property BoundBy=my.service --property Wants=my.service sleep inf'

мой.сервис:

[Unit]
Description=My service

[Service]
Type=exec
ExecStart=/path/to/my/program
Restart=always

Я бы рассматривал использование этих свойств как хакерский и, вероятно, являющийся ошибкой.Но может кому пригодится.

1
18.03.2021, 23:23

Теги

Похожие вопросы