nohup으로 파이핑을 하면 왜 티가 중간에 멈추나요?

nohup으로 파이핑을 하면 왜 티가 중간에 멈추나요?

완료하는 데 몇 시간이 걸리는 스크립트(Laravel 프로젝트에서)를 실행하고 있습니다. nohupSSH 세션 연결이 끊길 때 종료되는 것을 방지합니다.

nohup php artisan do:thing 2>&1 | tee ~/tmp

정상적으로 시작되지만 잠시 후 파이프 파손 오류가 발생하여 콘텐츠 출력이 중지되고 tee중지됩니다. 문서는 해당 시점에서 중지됩니다.

teeSSH 세션 삭제로 인해 프로세스가 종료되었기 때문인 것 같습니다 . 멈출 수 있나요?

티 프로세스를 거부하고 ssh가 티 프로세스를 종료하는 것을 방지할 수 있습니까?

답변1

nohup첫 번째 명령에 적용됩니다 . 셸을 닫으면 tee더 이상 일반 출력을 쓸 수 없습니다(표준 출력) 그리고 종료합니다. 이로 인해 더 이상 파이프된 출력을 쓸 수 없으므로 첫 번째 명령이 종료됩니다.

이 시도

nohup php artisan do:thing >~/tmp 2>&1

또는 가지고 있는 경우 screen,

screen sh -c 'php artisan do:thing 2>&1 | tee ~/tmp'

관련 정보