Linuxからログアウトしても生き残るプロセスは何ですか、それ以外のプロセスは何ですか?

Linuxからログアウトしても生き残るプロセスは何ですか、それ以外のプロセスは何ですか?

Linux(特にUbuntu)からログアウトすると、何が起こるのか理解しようとしています。

  • プロセスは、最初にログアウトを実行するためにログアウトプロセスにどのように要求/通知しますか(一部の信号または他のIPC方式を送信することによって)ログアウトプロセスではどのプログラムが実行されますか?リクエスト/通知プロセスは通常どのプログラムを実行しますか?

  • プロセスをログオフすると、どのプロセスが終了し、どのプロセスが終了しませんか? (ログイン後にプロセスを開始し、ログアウト後も保持する方法はいくつかありますが、どうすればよいですか?終了します)

  • ログアウトプロセスはこれらのプロセスをどのように終了できますか?

仮想コンソール、デスクトップ環境、SSHという3つのシナリオを考えてみましょう。 (最初の2つはオペレーティングシステムによって提供され、3番目は両方ともユーザースペースで実行されますが、そうではありません。)

  1. 仮想コンソールにログインすると、ログインシェルから次の親プロセスをインポートします。

    1 systemd
    721 login
    26284 bash
    

    ログアウトすると、そのプロセス721 loginとその下のプロセスが消えます。

  2. Lubuntu 18.04でlightdmとLXDEにログインし、デスクトップパネルでlxterminalを実行し、lxterminalウィンドウで次のコマンドを使用して親プロセスをインポートします.

    $ ps -paus $$
    systemd,1 --system --deserialize 19
      `-lightdm,661
          `-lightdm,27302 --session-child 13 24
              `-lxsession,27309,testme -s Lubuntu -e LXDE
                  `-lxpanel,27399 --profile Lubuntu
                      `-lxterminal,27565
                          `-bash,27568
                              `-pstree,27594 -paus 27568
    

    ログアウトすると、そのプロセスlightdm,27302とその下のプロセスが消えます。

  3. Lubuntu 18.04にSSHを接続した後:

    $ pstree -a -p   -s $$
    systemd,1 --system --deserialize 19
      └─sshd,669 -D
          └─sshd,22838 
              └─sshd,22979  
                  └─bash,22980
                      └─pstree,30610 -a -p -s 22980
    

    ログアウトすると、sshd,22838以下から始まるすべてのプロセスが消えます。

ありがとうございます。

答え1

/usr/lib/systemd/systemd-logindOSログアウトプロセスにsystemd(特に)がどのように関与しているかわかりません。

私の答えのいくつかは次のとおりです。

  1. The loginwait()プロセスのログインシェルプロセス、ログインシェルが終了したら、受信して起動し、login実行SIGCHLDを再開します。つまり、終了します。

  2. そうだログアウトリクエスタ例えばlxsession-logout プロセスSIGTERMに送信lxsession (私はソースコードをよく理解していないので「〜のようだ」と言います。)その子孫がどうlxsession反応したのSIGTERMか、なぜ死んだのかわかりません。構成が見つかりません。私たちの両親lightdm,27302もなぜlxsession亡くなったのかわかりません。目が覚めた後、両親が死亡するlightdm,27302可能性があります wait()lxsession

  3. SSHを終了した後に何が起こるのかわかりません。私はCLIログイン(ケース1)と似ているようですが、待って死ぬsshd,22979ことがあります。bash,22980しかし、なぜこのようなプロセスが多いのかわかりませんsshd

答え2

覚えておいてください。私はすべての詳細を教えても、あなたは理解できないからです。私はまた、あなたがすべての概念に精通しているわけではないことを知っていますが、マンページを読むのは役に立ちます。

プロセスは、最初にログアウトを実行するためにログアウトプロセスにどのように要求/通知しますか(一部の信号または他のIPC方式を送信することによって)ログアウトプロセスではどのプログラムが実行されますか?リクエスト/通知プロセスは通常どのプログラムを実行しますか?

「ログアウトプロセス」が「セッションマネージャ」を意味すると仮定します。 .IPClogind/usr/lib/systemd/systemd-logind可能なすべてのプログラムlogind

プロセスをログオフすると、どのプロセスが終了し、どのプロセスが終了しませんか? (ログイン後にプロセスを開始し、ログアウト後も保持する方法はいくつかありますが、どうすればよいですか?終了します)

そのセッション内のプロセスが終了し、これがユーザーの最後のセッションであり、ユーザーが延期を有効にしていない場合は、ユーザー全体のフラグメントが削除されます。殺さないことで。logindこのカーネル機能は使用されていないため、端末制御とはほとんど関係ありません。

ログアウトプロセスはこれらのプロセスをどのように終了できますか?

単位ファイルとシグナルに事前定義された操作を含む複雑なロジック。

1,2,3プロセスツリービューが機能しません。logindこれを気にしないでください。デフォルトでは、システムスタイルサービスとセッション管理はcgroupです。望むよりsystemctl status

関連情報