rhel 6은 충돌 후 서비스를 자동으로 다시 시작합니다.

rhel 6은 충돌 후 서비스를 자동으로 다시 시작합니다.

systemd(chkconfig 등) 없이 이를 어떻게 달성할 수 있나요?

PostgreSQL, Mongod 및 RabbitMQ를 다시 시작하고 싶습니다.

답변1

서비스를 자동으로 복원하려면 를 사용할 수 있습니다 monit. 이는 매우 가볍고 사용하기 쉬운 서비스입니다.

Debian에 설치하려면 다음을 수행하십시오.

sudo apt-get install monit

Monit 설치 및 구성 방법

구성에 관해서는 /etc/monit/monitrc서비스를 편집하고 다시 시작할 수 있습니다.

예를 들어 데몬이 실행 중인지, 서비스가 적절한 포트에서 응답하는지 여부를 모니터링하고 PostgreSQL, RabbitMQ 및 mongoDB에 대한 자동 복구를 구성합니다.

check process postgres with pidfile /var/postgres/postmaster.pid
   group database
   start program = "/etc/init.d/postgresql start"
   stop  program = "/etc/init.d/postgresql stop"
   if failed unixsocket /var/run/postgresql/.s.PGSQL.5432 protocol pgsql 
      then restart
   if failed host 192.168.1.1 port 5432 protocol pgsql then restart

check host mongodb with address localhost
    start program = "/usr/bin/sudo /opt/database/mongo/bin/mongod"
    stop program = "/usr/bin/sudo /usr/bin/pkill -f mongod"
    if failed port 28017 protocol HTTP
        request /
        with timeout 10 seconds
        then start

check process rabbitmq-server with pidfile /var/run/rabbitmq.pid  
   group rabbitmq  
   start program "/etc/init.d/rabbitmq-server start"  
   stop program "/etc/init.d/rabbitmq-server stop"  
   if failed port 5672 type tcp then restart  
   if 3 restarts within 3 cycles then timeout  

더 많은 서비스를 원하시면 다음을 참조하세요:모니터링 위키

Monit을 사용하면 규칙에 따라 이메일을 보낼 수 있으며 서버 로드 내에서 작동합니다. 누구에게나 더 나은 조사를 권장합니다.

답변2

Red Hat 6은 어떤 용도로 사용되나요?갑자기 나타나다초기화 시스템으로.

/etc/init(NOTE: NOT ) 에서 올바른 초기화 정의를 생성해야 합니다 /etc/init.d.

예를 들어(그러나 디버깅이 필요할 수 있음)/etc/init/myservice

start on runlevel [2345]
stop on runlevel [S016]

respawn
exec /code/to/program

이 값은 종료된 경우 respawn다시 시작됩니다 .program

관련 정보