2016-10-25 1 views
0

Monit을 사용하여 모니터링하는 프로세스가 있습니다. 어떤 이유로 프로세스가 죽으면 쉘 스크립트를 사용하여 슬랙 알림을 보내고 다시 시작합니다. 이 문제는 "존재하지 않습니다"지시문과 함께 작동하지 않지만. 마지막 하나는 실행되고 이전 것은 무시됩니다. 아래 코드 예 :Monit의 두 번째 "존재하지 않음"이 첫 번째 우선 적용

check process xyz with pidfile /var/run/xyz.pid 
    start program = "/etc/init.d/xyz start" with timeout 60 seconds 
    stop program = "/etc/init.d/xyz stop" 
    if does not exist then restart 
    if does not exist then exec "/opt/somescript.sh" 

스크립트를 실행하지만 다시 시작하지 않습니다. 문서에서 보듯이 이것이 어떻게 동작 할 것인가와 유사합니다. 이 방법을 사용하는 다른 방법. 문서 참조 (정확히 분명하지만 유사하지 실제 동작) :

If not defined, it defaults to a restart action. 
You can override the default action with the following statement: 

답변

0

내 생각 엔 기본 동작은 문서에 따라, 프로세스를 다시 시작하기 위해 이미, 당신은 exec 조치 있음을 재정의하다

깨끗한 방법은 somescript.sh 안에 다시 시작 스크립트를 추가하는 것입니다.

당신이 그렇게하지 않으려면

, 당신은 또한 다음과 같이 하나에 두 가지 작업을 결합 할 수 있습니다 :

if does not exist then exec "/etc/init.d/xyz restart && /opt/somescript.sh" 
+0

죄송 합니다만, 질문을 입력하는 동안 죄송 합니다만, 지금 바로 고쳐 주셨습니다. –

+0

아, 알겠습니다. 나는 그 대답을 업데이트했다. 아마도 재시작과 스크립트를 대신 한 행동으로 넣는 것이 가장 좋다. – Ulugbek

+0

내가 exec에서 두 개의 명령을 호출하고 &&로 분리해도 몇 가지 이상한 이유가 있습니다. 첫 번째 명령 만 호출합니다. 나는 장소를 바꾸어서 이것을 테스트했지만 항상 하나의 명령 만 불렀다! –

0

내가 MONIT 당신이 두 번 같은 문장을 허용하지 않습니다 생각합니다. somescript.sh에 프로세스를 다시 시작하는 스크립트를 작성해야합니다.

관련 문제