2012-10-13 2 views
1

나는이 관련 질문을 사용할 수 있다고 생각했다. How Do I write a bash script to restart a process if it dies. @lhunath는 훌륭한 대답을하고 그것이 잘못되었다는 것을 다 말해 주었다. 그러나 나는 데몬 프로세스를 다시 시작하고, 내가 할 수있는 일이 스크립트 하나에서 할 수 있기를 바란다.데몬을 다시 시작하기위한 bash 스크립트 작성

내 프로세스가 시작 로그를 보여줍니다 킥 오프 스크립트로 시작하지만 다음 종료하고 쉘 오프 실행 과정을 나뭇잎, 최대

>sudo ./start 
R CMD Rserve --RS-conf /var/FastRWeb/code/rserve.conf --vanilla --no-save 
... 
Loading required package: FastRWeb 
FastRWeb: TRUE 
Loading data... 
Rserv started in daemon mode. 
> 

과정이를 실행

ps -ale | grep Rserve 1 S 33 16534 1 0 80 0 - 60022 poll_s? 0시 0분 0초 Rserve

포장 또는 배쉬에서 '시작'스크립트를 호출 프로세스가 죽거나이 PID 파일이 실제로 요구되는 경우가되면 다시 시작하는 간단한 방법이 있나요?

Dang - 질문은 stackoverflow에서 닫히지 않은 매우 유사한 질문을 가리킨 후에도 닫혔습니다. 너희들 빨아

+0

true 인 경우; sudo ./start를 실행하십시오. 수면 1; 완료 ?? – Oliver

+0

프로그램이 비 데몬 모드를 제공합니까? –

+1

또한'pgrep' 및'pidof' 매뉴얼 페이지를 확인하십시오. 그들은 약간의 통찰력을 제공 할 수 있습니다. –

답변

2

프로그램을 모니터링하는 아주 간단한 방법은 cron을 사용하는 것입니다. 프로그램이 아직 실행 중이면 매분 (또는 그 이상)을 확인하고 그렇지 않으면 ./start을 확인하십시오.

루트 권한으로 crontab -e을 호출하십시오.

과 같은 라인을 추가 :이 당신이 원하는 것을하지 않으면

* * * * * if ! pidof Rserve 2>&1 >/dev/null; then /full/path/to/start; fi 

이 방법은 즉,이 등 재부팅 후 실행됩니다, 지속적인 유지됩니다 쉘 스크립트로 이동 :

#! /bin/bash 
# monitor.sh 
while true; do 
    if ! pidof Rserve 2>&1 >/dev/null; then /full/path/to/start; fi 
    sleep 10 
done 

이 스크립트는 명령 줄에서 수동으로 시작해야하며 Ctrl-C를 사용하여 쉽게 중지 할 수 있습니다.

1

가장 쉬운 해결책은, 만약 당신이 프로세스를 실행할 수 NON 데몬 모드는 스크립트에 그것을 포장하는 것입니다.

#!/bin/bash 
while (true) 
do 
    xmessage "This is your process. Click OK to kill and respawn" 
done 

편집

많은 deamons는 PID를 포함하는, 일반적으로 /var/lock에서, 잠금 파일을 둡니다. 이것은 deamon의 여러 복사본을 실행하지 못하게합니다.

Linux에서는 /proc을보고 그 프로세스가 아직 진행 중인지 확인하는 것이 매우 간단합니다.

다른 플랫폼에서는 ps으로 게임을해야 프로세스 존재 여부를 확인할 수 있습니다.

관련 문제