SSH를 통해 원격으로 작업을 실행하는 간단한 시스템을 구현 중입니다. 내 목표는 작업을 실행 screen
하고 작업이 종료될 때 TypeScript를 사용하여 모든 출력을 기록 script
하고 서버에 업로드하는 것입니다. 그러나 script
프로세스가 SIGTERM을 수신해도 종료되지 않기 때문에(대신 내부에서 실행되는 프로세스가 script
좀비가 됨) SIGTERM을 적절하게 처리하는 데 어려움을 겪고 있습니다(예: 원격 시스템이 종료되려고 할 때) .
다음 명령을 가정합니다.
script -e -q -c 'ping www.google.com'
killall -TERM script
프로세스 에 SIGTERM 신호를 보내는 데 사용하면 script
SIGTERM 신호가 ping
종료되는 것처럼 보이지만 좀비 프로세스가 되어 script
종료되지 않습니다.
> ps -aux | grep ping
karel 16460 0.0 0.0 10852 2732 pts/2 S+ 12:57 0:00 script -e -q -c ping www.google.com
karel 16461 0.1 0.0 0 0 ? Zs 12:57 0:00 [ping] <defunct>
내가 올바르게 이해했다면 부모 프로세스가 여전히 이를 관찰하고 있기 ping
때문에 프로세스는 좀비입니다 . 그러나 프로세스 관찰을 중지하고 (타입 스크립트를 플러시하는 동안) 정상적으로 종료 script
할 수 있습니까 ?script