프로세스가 종료 된 후 프로세스를 자동으로 다시 시작하려면 어떻게해야합니까?


11

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

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

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


질문을 바꾸시겠습니까? 프로세스가 종료 된 후 프로세스를 다시 시작 하시겠습니까?
mailq

프로세스가 결함이 있거나 자체 종료되면 프로세스를 자동으로 다시 시작하고 싶습니다.
삭제

2
전통적인 init 프로그램은 이것을 정확하게 수행합니다. 사람들이 init를 사용하여 동일한 작업을 수행하는 다른 프로세스를 시작하는 쉘 스크립트를 호출하는 쉘 스크립트를 실행하는 것이 좋은 생각이라고 생각하지만 자동 커널 패닉 및 재부팅없이 프로세스가 실패하면 완전히 저쪽에 있습니다.
Simon Richter

그것은 좋은 지적입니다. init를 사용하여 조사 할 것입니다. dpkg를 사용하여 소프트웨어를 패키징하고 있으므로 init 스크립트를 만드는 것이 어렵지 않습니다.
삭제함

답변:


10

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

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


1
고마워-그게 내가 추구하는 것입니다. DJB = 일반적으로 좋습니다. 나는 큐메일을 돌보는 5 년 동안 무엇을했는지에 대해 실제로 기억해야했다!
삭제됨

djbdns를 꽤 오랫동안 돌보는 것을 제외하고는 나와 동일합니다.
mr.b

10

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

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


2
daemontools는 훌륭합니다. monit은 "도대체 왜 시작하지 않을까요?!" 좌절.
울림

2

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


2

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

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

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

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


2

프로세스 재시작을 처리하는 교차 배포 방법은 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 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.