
選択したユーザーに対して実行されるシステム サービスがあります。名前は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
その後を追って走ってください。