
我有一個為選定用戶執行的系統服務。名稱是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
…
這也會改變其他服務和後台程序的行為(例如screen
,tmux
)。看問題#3483;
在那之後跑systemctl restart systemd-logind
。