SSH 세션 시간이 초과될 때 nohup ./a.out이 죽는 실제 이유는 무엇입니까?

SSH 세션 시간이 초과될 때 nohup ./a.out이 죽는 실제 이유는 무엇입니까?

./a.outSSH를 통해 터미널에서 실행 하면 SSH 세션이 시간 초과되어 ./a.out종료됩니다. 왜 이런거야? 어떤 사람들은 SIGHUP 때문이라고 합니다. 그러나 실행해도 nohup ./a.out여전히 동일한 문제가 있습니다. SSH 세션 시간이 초과되면 프로세스가 nohup ./a.out여전히 종료됩니다.

나는 사람들이 부모가 죽으면 아이들도 죽기 때문이라고 말하는 것을 본 적이 있습니다. 그러나 나는 이것이 일반적으로 사실이 아니라고 다른 곳에서 주장하는 것을 보았습니다.

또 다른 설명은 ./a.out의 표준 출력이 터미널에 바인딩되어 있다는 것입니다. 따라서 터미널이 종료된 후 ./a.out이 터미널에 쓰기를 시도하면 SIGPIPE가 수신되어 종료됩니다.

nohup ./a.outSSH가 시간 초과되는 실제 이유는 무엇입니까?

이것은 내가 실행 중인 실제 명령입니다.nohup ./a.out |& tee logs.out

답변1

귀하의 경우 tee logs.out터미널에 쓰기 작업이 종료되고 SSH 연결이 종료된 후 쓰기를 시도하면 종료됩니다. 이는 또한 nohup다음 a.out에 표준 출력에 쓸 때 종료되도록 합니다.

살아남 으려면 nohup ./a.out파이프 없이 백그라운드에서 실행하고 파일을 개별적으로 감시해야 합니다 nohup.out.

nohup ./a.out &
tail -f nohup.out

또는 로그 파일을 사용하여

nohup ./a.out > logs.out &
tail -f logs.out

관련 정보