프로그램이 신호 트랩에 의해 호출된 함수에서 시작되지 않았습니다.

프로그램이 신호 트랩에 의해 호출된 함수에서 시작되지 않았습니다.

콘솔에서 닫힐 때 일부 정리 명령을 실행해야 하는 Bash 스크립트가 있습니다.

기본적으로 정리는 내 Python 데몬에서 다시 시작하는 명령입니다.) 현재 프로세스를 중지하고 새 프로세스를 시작합니다. Python 데몬 애플리케이션을 모니터링하기 위한 Bash 스크립트입니다.

그러나 문제는 어떤 이유로 Python 프로그램을 다시 시작하기 위해 프로그램을 시작하지 않는다는 것입니다.

Bash 스크립트는 Raspbian을 사용하는 Raspberry Pi의 데스크탑에 있습니다. 두 번 클릭하고 선택하여 실행해야 합니다.터미널에서 실행.

이것이 내 코드의 핵심입니다.

function clean_up {
    python3 A restart & #stops the python Deamon if running, then start it. (will start if it wasn't running to begin with)
    disown
    quit    
}

trap clean_up SIGINT 
trap clean_up SIGTERM
trap clean_up SIGHUP
trap clean_up SIGCHLD
trap clean_up SIGCONT
python3 A stop
... (code to start monitor)
python3 A start ArgumentToHookToMonistor 

답변1

이것이 원하는 대로 될지 확실하지 않지만 문제를 디버깅하는 데 도움이 될 것입니다.

  • 스크립트 시작 부분에서: 작업 제어 활성화(스크립트에서는 기본적으로 비활성화되어 있음):set -m

  • 그런 다음 clean_up 함수에서 다음 disown으로 변경합니다.disown %1 2>&1 | tee /path/to/logfile.log

  • 또한 함수에서 스크립트를 수동으로 실행할 때 메시지를 볼 시간을 갖고 싶다면 sleep 3해당 줄 앞에 추가하십시오.quit

관련 정보