./a.out
SSH를 통해 터미널에서 실행 하면 SSH 세션이 시간 초과되어 ./a.out
종료됩니다. 왜 이런거야? 어떤 사람들은 SIGHUP 때문이라고 합니다. 그러나 실행해도 nohup ./a.out
여전히 동일한 문제가 있습니다. SSH 세션 시간이 초과되면 프로세스가 nohup ./a.out
여전히 종료됩니다.
나는 사람들이 부모가 죽으면 아이들도 죽기 때문이라고 말하는 것을 본 적이 있습니다. 그러나 나는 이것이 일반적으로 사실이 아니라고 다른 곳에서 주장하는 것을 보았습니다.
또 다른 설명은 ./a.out의 표준 출력이 터미널에 바인딩되어 있다는 것입니다. 따라서 터미널이 종료된 후 ./a.out이 터미널에 쓰기를 시도하면 SIGPIPE가 수신되어 종료됩니다.
nohup ./a.out
SSH가 시간 초과되는 실제 이유는 무엇입니까?
이것은 내가 실행 중인 실제 명령입니다.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