로그인 쉘을 종료하면 항상 운영 체제가 종료됩니까?

로그인 쉘을 종료하면 항상 운영 체제가 종료됩니까?

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내장된 bash exit등과 같은 다른 수단을 통해서도 가능) 반드시 운영 체제에서 로그아웃됩니까?

또한 운영 체제를 종료한다는 것이 무엇을 의미하는지 묻고 싶습니다.

감사해요.


다음으로 확장: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)은 하위 쉘이 종료될 때까지 기다린 다음 일부 정리 작업(예 wtmp: utmp)을 수행한 다음 종료됩니다. 이것이 바로 이 프로세스를 실행한 후에 더 이상 이 프로세스가 표시되지 않는 이유입니다 logout.

관련 정보