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