Bash 매뉴얼에 따르면
logout [n]
로그인 쉘을 종료하고 n 상태를 쉘의 부모에게 반환합니다.
Ubuntu의 가상 콘솔에서 먼저 로그인한 다음 로그인 셸에서 실행합니다.
$ pstree -paus $$
systemd,1 --system --deserialize 19
`-login,30488 -p --
`-bash,31728,t
`-pstree,31774 -paus 31728
그런 다음 실행하면 "셸로 반환되는 상위 프로세스"인 프로세스뿐만 아니라 logout
아래에서 시작하는 모든 프로세스 가 사라집니다 .login,30488
login
bash 쉘에 로그인할 때 bash 내장 명령이 logout
쉘뿐만 아니라 운영 체제도 종료합니까?
로그인 쉘을 종료하면(반드시 logout
내장된 bash exit
등과 같은 다른 수단을 통해서도 가능) 반드시 운영 체제에서 로그아웃됩니까?
또한 운영 체제를 종료한다는 것이 무엇을 의미하는지 묻고 싶습니다.
감사해요.
답변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
.