2012-08-30 3 views
2

내 서버에서 데몬을 실행 중입니다. 그것은 잠시 동안 순조롭게 돌아가고 있으며, 데몬에서 모든 이벤트 발생을 로깅합니다.우분투에서 프로세스가 중지되었는지 감지

어제 이상한 것으로 나타났습니다. 데몬의 실행이 중지되었지만 로그에 오류 항목이 없었습니다.

내 시스템에서는이 데몬이 계속 실행되고 어떤 이유로 중지되면 다시 시작됩니다.

특정 프로세스가 실행 중인지 또는 우분투가 아닌지 정기적으로 감지 할 수있는 방법이 있습니까 ?? 내가 쉽게 다시 시작할 수 있다고 감지 할 수 있지만 탐지가 중요한 문제인 경우

답변

2

cron을 사용하십시오.

은 사용하는 스크립트를

ps aux | grep -c <your process/daemon name> 

같은 라인 무언가를 매 X 분 스크립트에서

을 실행할 수 있도록하고 출력을 확인합니다.

이 값이 1보다 큰 경우 프로세스가 실행 중이며 아무 것도하지 않는 것으로 가정 할 수 있습니다. 그렇지 않으면 데몬을 다시 시작하십시오.

https://help.ubuntu.com/community/CronHowto

프로세스가 필요로하는 경우

특정 사용자 (예 : wwwrun) 해당 사용자

+1

답장을 보내 주셔서 감사합니다. @Loopo. 이것을 사용하려고하지만, 이것을 사용하려고하는 사람들을위한 참고로, 다른 명령 자체의 grep 프로세스가 응답 중 하나로 되돌아옵니다. 따라서 프로세스가 카운트를 실행중인 경우 2. –

2

프로그램 인 타이틀 콘솔에서 분리하지 않는 경우로 프로세스를 시작해야합니다에 의해 실행되는 (즉,) 포 그라운드에서 실행 유지, 당신이 뭔가를 할 수 있습니다 :

while /bin/true; do 
    /PATH/TO/YOUR/daemon 
    logger -p local0.warn "daemon crashed" 
done 

이 경고를 기록하고 데몬 프로세스를 다시 만들고. Loopo에 의해

PID=`cat /var/run/daemon.pid` 
if [ -z `ps hp $PID` ]; then 
    logger -p local0.warn "daemon crashed" 
fi 

또는

if [ -z `ps ax | grep [d]aemon` ]; then 
    logger -p local0.warn "daemon crashed" 
fi 

중 첫 번째 예에서와 같이, 또는 크론을 통해 루프에서

을 제안 : 그렇지 않으면 당신은 아마 감시를 실행해야합니다.

마지막 예제에서 데몬 이름의 첫 번째 문자를 둘러싼 대괄호는 grep 프로세스가 출력에 표시되지 않도록합니다.

관련 문제