ログインシェルを終了すると、常にオペレーティングシステムが終了しますか?

ログインシェルを終了すると、常にオペレーティングシステムが終了しますか?

Bashのマニュアルによると

logout [n]

ログインシェルを終了し、n 状態をシェルの親に返します。

Ubuntuの仮想コンソールで最初にログインし、ログインシェルで実行します。

$ pstree -paus $$
systemd,1 --system --deserialize 19
  `-login,30488 -p --  
      `-bash,31728,t
          `-pstree,31774 -paus 31728

その後、実行すると、「シェルに返される親プロセス」であるプロセスだけでなく、logout下から始まるすべてのプロセスも消えます。login,30488login

bashシェルにログインすると、bash組み込みコマンドはシェルだけlogoutでなくオペレーティングシステムもシャットダウンしますか?

ログインシェルを終了すると(必ずlogout組み込みのbashexitなどの他の手段を介しても可能)、必ずオペレーティングシステムからログアウトされますか?

また、オペレーティングシステムをシャットダウンすることが何を意味するのか尋ねたいと思います。

ありがとうございます。


次に拡張:https://stackoverflow.com/questions/53887813/how-does-the-login-program-in-linux-invoke-a-login-shell

ベストアンサー1

つまりbash、「ログインシェル」は、フラグで呼び出されるシェル-lまたは引数0の最初の文字で始まるシェルです-。 (man bash「通話」セクションを参照)

-bashあなたの例では、プロセス31728が呼び出され、aで始まるので、-ログインシェルとして呼び出されることがわかります。

logoutログインシェルを終了します。

したがって、を実行するとbash -l呼び出しlogoutシェルに戻ります。

$ echo $$
32145
$ bash -l
bash-4.2$ logout
$ echo $$
32145

loginプログラム(例のプロセス30488)は、サブシェルが終了するのを待ってから、いくつかのクリーンアップ操作(例:)wtmputmp実行してから終了します。これが、このプロセスを実行した直後にこのプロセスが表示されなくなる理由ですlogout

おすすめ記事