백그라운드 프로세스가 충돌할 때 스크립트 실행

백그라운드 프로세스가 충돌할 때 스크립트 실행

저는 Spring Boot를 사용하여 생성된 애플리케이션을 실행하고 있습니다. 그러나 결국에는 때때로 그것이 무너지는 것을 봅니다. nohup을 사용하여 실행하고 있습니다. 이 프로세스가 중지되면 nohup.out을 백업하고 서버에 충돌을 알리는 이메일을 보내는 스크립트가 실행되도록 후크를 연결하고 싶습니다. 그것을 할 수 있는 방법이 있나요?

참고: 이는 필수는 아니며 정보 제공용일 뿐입니다. 나는 우분투를 사용하고 있습니다

답변1

기발한 방법을 생각해냈어요카밀 마코로프스키존재하다이 답변 셸 컨텍스트에서 연속 명령을 만들어 백그라운드 응용 프로그램을 정리 프로세스에 연결하면 됩니다. "간단한" 방법은 다음과 같습니다.

nohup sh -c "<Main Process>; <reporting process>" &

여기서는 nohup기본 프로세스를 실행하는 'ed 쉘을 비동기식으로 실행한 다음 (어떤 이유로든) 기본 프로세스가 종료된 후 보고/정리 프로세스를 (무조건적으로) 실행합니다. 보다 안정적인 솔루션은 짧은 스크립트를 작성하는 것입니다.

#!/bin/sh
만약에<주요공정>
그 다음에
    <정상해지 처리>
기타
    <비정상 종료 처리>
필리핀 제도

또는

#!/bin/sh
<주요공정>
대소문자 "$?"
이삭

그런 다음 스크립트를 실행하십시오.nohup foo.sh &

유일한 우려 사항이 일부 내부 오류로 인해 응용 프로그램이 종료되는 것이라면 이것이 아마도 최선의 해결책일 것입니다. 특정 위험이 있는 경우다른프로세스가 이상해지고 여러 개의 치명적인 신호를 보내면 (애플리케이션이 종료되기를 기다리는) 셸이 폭발하여 정리 프로세스를 시작할 수 없을 수도 있습니다. 이 경우 고려해 볼 수 있습니다.G-맨~의답변, 이는 주기적으로 신호 0을 애플리케이션에 보내는 모니터링 프로세스가 있음을 나타냅니다. 프로세스가 더 이상 존재하지 않는다는 오류를 수신하면 정리 작업이 시작됩니다.

관련 정보