프로세스가 종료 된 후 프로세스를 자동으로 다시 시작하려면 어떻게해야합니까? 실패 할 것으로 기대하지는

데비안 스퀴즈 상자에서 종료 한 후 다시 시작하려는 golang 프로그램이 있습니다. 문제는 Apache 2 mod_proxy 설정 뒤에 HTTP를 제공하는 것입니다. 프로세스가 실패 할 것으로 기대하지는 않지만 이에 대한 보험을 받고 싶습니다.

우분투에서는 프로세스를 계속 유지하기 위해 upstart를 사용했을 것입니다. 데비안은 Instart 대체품이라는 점에서 Upstart를 좋아하지 않습니다.

Squeeze에서 작동하고 init과 잘 작동하는 하나 이상의 프로세스를 종료 한 후 다시 시작하는 대안이 있습니까?



답변

그것을위한 가장 좋은 방법은 daemontools입니다. 프로세스를 모니터링하고 다시 생성 할 수 있습니다.

해당 웹 사이트의 설명서를 참조하십시오 : http://cr.yp.to/daemontools.html


답변

감독 은 가볍고 효율적인 대안입니다. 데비안에서는 daemontools에 패키지되어 있습니다 . 이 관련 질문을 읽을 수도 있습니다 . 여기에는 일부 감독 비판 과 다른 가능성으로 다시 시작된 언급이 있습니다.

마지막으로, 설정하기 매우 쉬운 것을 원한다면 monit으로 큰 성공을 거두었습니다 . 또한 데비안 패키지로 제공됩니다 .


답변

감독 또는 감시는 단일 프로세스를 유지하는 데 좋습니다. “하나 이상의”프로세스를 유지하도록 요청하기 때문에 supervisord 를 연결하고 싶습니다 . 단일 프로세스를 관리하는 것은 확실히 과잉이지만 여러 프로세스를 추적해야하는 경우에는 문제가 될 수 있습니다.


답변

한 가지 옵션은 /etc/inittab스크립트를에 넣는 대신 사용하는 것입니다 /etc/init.d/.

다음 형식으로 항목을 추가하기 만하면됩니다.

<jobname>:<runlevels>:respawn:<command>

불행히도 이것은 일반적인 start / stop / restart init 명령을 사용할 수 없지만 스크립트가 항상 실행되고 있음을 의미합니다.


답변

프로세스 재시작을 처리하는 교차 배포 방법은 cron과 간단한 스크립트를 사용하는 것입니다. 당신은 여기에 작성자를 볼 수 있습니다 리눅스에서 실행되는 작업을 유지하는 방법

스크립트는 다음과 같습니다

#!/bin/bash
# make-run.sh
# make sure a process is always running.
# Add the following to the crontab (i.e. crontab -e)
# */5 * * * * /home/path_to_make_run/make-run.sh

process=servermonitoringhq
makerun="/home/path_to_the_job_you_want_running/runjob.sh"

if pgrep $process > /dev/null
then
  exit
else
  $makerun &
fi


답변