以使用者身分執行的系統服務在登出時終止

以使用者身分執行的系統服務在登出時終止

我有一個為選定用戶執行的系統服務。名稱是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#Automatic_start-up_of_systemd_user_instances

答案2

您可以變更登入配置:

/etc/systemd/logind.conf

[Login]
KillUserProcesses=no

這也會改變其他服務和後台程序的行為(例如screentmux)。看問題#3483;


在那之後跑systemctl restart systemd-logind

相關內容