자주 액세스하지 않는 컴퓨터에서 원격 작업을 수행하고 있는데 세션이 끝나면 sudo halt
연결을 종료하고 컴퓨터를 종료하라는 명령을 실행합니다. 아쉽게도 지금은 세션에서 사용한 명령이 파일에 기록되었는지 알 수 없습니다 .bash_history
. 이에 따르면 man halt
실행 중인 모든 프로세스에 SIGTERM을 보낸 다음 SIGKILL을 보냅니다(프로세스가 시간 내에 종료되지 않는 경우에만 이 작업을 수행한다고 생각합니다).
중지 및 다시 시작 유틸리티는 파일 시스템 캐시를 디스크로 플러시하고 SIGTERM(뒤에 SIGKILL)을 실행 중인 모든 프로세스에 보낸 다음 각각 시스템을 중지하거나 다시 시작합니다.
먼저 bash에 SIGTERM을 보내 개인 컴퓨터에서 이것을 테스트했지만 bash가 응답하지 않는 것 같습니다. 그런 다음 SIGKILL을 보냈는데, 이로 인해 bash가 강제로 죽게 되었습니다. 그런 다음 .bash_history
내 세션에 기록된 내용이 있는지 확인하기 위해 파일을 확인했지만 아무것도 기록되지 않았습니다. 제가 이해한 바에 따르면 SIGTERM은 프로세스에서 무시될 수 있고 이 신호에 응답하는 방법을 해석할 수 있으므로 필요한 경우 종료 프로세스를 수행할 수 있기 때문에 이는 의미가 있습니다. 그러나 다시 한 번 내 자신의 이해에 따르면 SIGKILL은 무시될 수 없으며 청소 또는 기타 죽음의 의식을 수행할 시간이 부여되지 않습니다.
이 테스트와 이 테스트에서 얻은 결론에 따르면 sudo halt
원격 호스트에서 실행할 때 원격 세션이 저장될 가능성이 거의 없는 것으로 보입니다. 내가 잘못해서 원격 세션을 저장하게 할 수 있는 방법이 있나요 .bash_history
?
답변1
- SIGTERM에 의해 SSH가 종료되었습니다.
- ssh는 의사 터미널(pty) 마스터 장치를 닫습니다.
- pty는 SIGHUP을 bash로 보냅니다.
- "SIGHUP을 받은 후 기본적으로 쉘이 종료됩니다."