Все службы пользователя прекращаются при запуске нескольких служб под этим пользователем с помощью systemd

GDM (Gnome Display Manager) Gnome управляет серверами графического дисплея и обрабатывает логины пользователей в графическом режиме. . См. эту страницу ArchWiki для получения дополнительной информации.

(из приведенной выше ссылки): Для автозапуска программ: Убедитесь, что ваш ~ / .xinitrc или / etc / X11 / xinit / xinitrc files source ~ / .xprofile :

#!/bin/sh
# Make sure this is before the 'exec' command or it won't be sourced.
[ -f /etc/xprofile ] && source /etc/xprofile
[ -f ~/.xprofile ] && source ~/.xprofile

Затем создайте свой ~ / .xprofile и добавьте команды, которые вы хотите использовать при запуске сеанса входа в систему с графическим интерфейсом пользователя.

3
01.07.2016, 11:35
2 ответа

Журнал изменений для systemd (v230) говорит:

systemd-logind теперь по умолчанию завершает пользовательские процессы, которые являются частью блока области действия пользовательского сеанса (session-XX.scope), когда пользователь {{1 }} выходит из системы. Это поведение контролируется параметром KillUserProcesses = в logind.conf, а предыдущее значение по умолчанию «нет» теперь изменено на «да». Это означает, что пользовательские сеансы будут должным образом очищены после, но необходимы дополнительные шаги, чтобы позволить преднамеренно длительным процессам пережить выход из системы.

Так что это поведение по умолчанию. Здесь также объясняется, что делать, чтобы отменить изменение: logind.conf , установить KillUserProcesses = на no - без-kill-user -cesses option - configure )

Но журнал изменений также включает ...

Пока пользователь вошел в систему хотя бы один раз, user @ .service запущен, и любая служба, которая должна пережить конец любого отдельного сеанса входа в систему , может быть запущена в пользовательской службе или области с помощью systemd-run . Справочная страница systemd-run (1) была расширена примером, показывающим , как запустить screen в блоке области под user @ .service . Та же команда работает для tmux.

и

После выхода пользователя из всех сеансов, user @ .service также будет завершен по умолчанию, если только у пользователя не активировано lingering . Чтобы пользователи могли эффективно выполнять долгосрочные задачи, даже если они вышли из системы, для них необходимо включить задержку. См. Loginctl (1) для получения подробной информации о . Политика polkit по умолчанию была изменена, чтобы позволить пользователям устанавливать для себя задержку без аутентификации .

Этот вариант более важен, поскольку он использует значение по умолчанию (kill'm all) со способом предоставления исключений: enable lingering .

Дополнительная информация:

4
27.01.2020, 21:18

Я думаю, проблема связана с системой зависимостей systemd .

Похоже, что может происходить такая логика выключения :

когда два блока с зависимостью порядка между ними выключаются, применяется обратный порядку запуска . т.е. если блок настроен с помощью After = на другом блоке, первый останавливается перед вторым, если оба выключены.

Однако ваш пример сценария не показывает, что вы создали зависимость между одним и другим.

Я попытался запустить ваш пример сценария «A», но он не запустился:

 Failed at step USER spawning /usr/bin/yes: No such process

(я тестировал на Ubuntu 16.04).

0
27.01.2020, 21:18

Теги

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