私のユーザーアカウントにログインすると、systemdを使用して一部のサービスが開始されます。たとえば、次のようになります。
systemctl --user enable foo.service
しかし、私は通常Xセッションを突然終了します。つまり、電源ボタンを押してシステムを直接起動します(最小デスクトップ環境があります)。 SystemdはXを殺し、すべての子プロセスを墓に送ります。
--user
この場合、システムはfooサービスを正常に終了しますか?
答え1
systemd --user
というシステムサービスとして実行されます[email protected]
。テンプレートサービスです。あなたのインスタンスはです[email protected]
。数字はあなたのユーザーID(id -u
)です。
システム終了ルーチンは[email protected]
通常の信号を使用して停止信号を送信しますSIGTERM
。これに応答して、systemd --user
プロセスは各ユーザにサービスが停止したことを知らせる。 [*]
systemctl cat [email protected]
ユーザーサービスのタイムアウト(猶予期間)を120秒以上に設定することはあまり意味がないことをお勧めします。その後、すべてのユーザーサービスはSIGKILL
メインシステム(PID 1)で受信されます。 SIGKILL
すぐに致命的です。
このファイルの設定については、man systemd.kill
およびを参照してくださいman systemd.service
。
[*]技術的には、systemd --user
応答はSIGTERM
ユーザーのデバイスを有効にすることですexit.target
。これはで言及されましたman systemd
。詳しくはexit.target
:-)systemctl cat exit.target
確認してもらいますman systemd.special
。