ユーザーとして実行されているシステム サービスはログアウト時に終了します

ユーザーとして実行されているシステム サービスはログアウト時に終了します

選択したユーザーに対して実行されるシステム サービスがあります。名前は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

logind の設定を変更できます:

/etc/systemd/logind.conf

[Login]
KillUserProcesses=no

screenこれにより、他のサービスやバックグラウンドプロセス( 、など)の動作も変わりますtmux問題 #3483;


systemctl restart systemd-logindその後を追って走ってください。

関連情報