
У меня есть системная служба, которая выполняется для выбранных пользователей. Имя — serv@<uid>
( <uid>
— UID пользователя). Я хочу поделиться с этой службой ограничениями ресурсов пользователя (поместить ее в user-<uid>.slice
), а также использовать его разрешения.
/etc/systemd/system/[email protected]
[Unit]
Description=My service for user %i
[Service]
Type=simple
ExecStart=/usr/local/bin/serv.sh
Restart=always
User=%i
Slice=user-%i.slice
SuccessExitStatus=0 255 SIGKILL SIGTERM
[Install]
WantedBy=multi-user.target
Когда пользователь выходит из системы, служба завершается с помощью SIGTERM. Почему служба не перезапускается? Как настроить так, чтобы служба не завершалась?
решение1
Для меня решением было loginctl enable-linger username
. Без этого сервис бы прекратил работу, когда пользователь выходил из системы.https://wiki.archlinux.org/index.php/Systemd/User#Автоматический_запуск_экземпляров_пользователей_systemd
решение2
Вы можете изменить конфигурацию входа:
/etc/systemd/logind.conf
[Login]
…
KillUserProcesses=no
…
Это также изменяет поведение других служб и фоновых процессов (например screen
, tmux
). См.выпуск №3483;
Бегите systemctl restart systemd-logind
после этого.