Python 프로그램이 실행을 취소합니다 nohup.

Python 프로그램이 실행을 취소합니다 nohup.

명령을 사용하여 백그라운드에서 프로세스를 시작하는 원격 세션을 통해 쉘 스크립트를 시작해 보았습니다.

nohup python3 run.py > nohup.out &

원격 세션이 닫히면 다음 메시지와 함께 프로세스가 종료됩니다.

포착된 신호 SIGHUP

SIGHUP이 포착되었지만 데몬화되지 않았습니다. 종료합니다.

모르겠어요; 프로세스가 백그라운드에서 시작되었을 때 왜 종료됩니까?안돼 &?

답변1

Python 프로그램이 실행을 취소합니다 nohup.

nohup끊김 신호를 무시한 SIG_IGN다음 동일한 프로세스에서 프로그램을 체인 로드합니다.

귀하의 Python 프로그램즉시 재설정끊김 신호에 대한 신호 처리, 자체 신호 처리기를 설치합니다. 해당 핸들러는 내부 기능(내가 본 것이라면 몇 가지 결함이 있는 가정을 기반으로 하여 잘 설계되지 않은 기능)을 확인하고 끊김 신호 수신 시 해당 메시지를 인쇄하는 것이 적절한 조치라고 결정합니다. 그리고 나가세요.

귀하의 Python 프로그램은 설계상 불가능합니다 nohup. 작업 제어 셸과 POSIX 세션/작업 의미 체계가 있는 시스템에서는 disown먼저 작업 중단 신호를 보내기 위해 셸이 해당 작업에 대해 알지 못하도록 작업을 수행 해야 합니다 .

(시스템 운영 체제에서는 그것만으로는 충분하지 않습니다. 시스템 사람들은 사용자 공간 로그인 세션 메커니즘에 대해 약간의 귀를 기울였기 때문에 중단이 아닌 시스템 종료 신호를 보내는 시스템 메커니즘도 확인해야 합니다. 로그아웃할 때마다 로그인 세션도 시작되지 않습니다.)

추가 읽기

관련 정보