2016-09-09 3 views
0

NOTE: Je cours Red Hat 6.7Inittab pas le redémarrage du service après l'accident de service dans Red Hat 6.7

J'ai un service qui est configuré avec le système init Linux pour démarrer un processus en tant que service lorsque les bottes de la machine. Cela a été fait en faisant cette configuration unique de la ligne de commande:

ln -snf /home/me/bin/my_service /etc/init.d/my_service 
chkconfig --add my_service 
chkconfig --level 235 my_service on 

Lorsque le redémarrage du système d'exploitation, le service démarre comme prévu.

J'ai aussi besoin de redémarrer le service si le service (my_service) tombe en panne. D'après ce que j'ai lu, tout ce que je dois faire est d'ajouter une entrée dans/etc/inittab qui ressemble à ceci:

mysvc: 235: respawn:/home/moi/bin/my_service_starter

Où my_service_starter ressemble à:

#!/bin/bash 
/home/me/bin/my_service start 

Ma compréhension est que lorsque le système détecte que init my_service ne fonctionne pas, il va tenter de le redémarrer en exécutant « my_service_starter ».

Cependant, cela ne semble pas fonctionner.

Je dois comprendre comment indiquer au système d'initialisation Linux de redémarrer mon service lorsque le service se bloque.

Répondre

0

Étant donné une entrée comme:

mysvc:235:respawn:/home/me/bin/my_service_starter 

Alors inittab sera:

  1. appel /home/me/bin/my_service_starter
  2. qui appellera /home/me/bin/my_service start
  3. ... puis la sortie, donc init sera chose que votre le service a échoué
  4. donc init appellera /home/me/bin/my_service_starternouveau

... et ainsi de suite, ce qui entraînera d'initialisation décider que votre script est rapide relance trop, après quoi il l'ignorer complètement.

Un processus a commencé par inittab est ne devrait pas quitter. Si vous voulez vraiment utiliser inittab pour maintenir votre service, vous pouvez supprimer /etc/init.d/my_service, and then in/etc/inittab` vous auriez quelque chose comme:

mysvc: 235: respawn:/home/moi/bin/my_service

Et vous devez vous assurer que my_service s'exécute au premier plan (certains programmes sont automatiquement démonisés par défaut, bien que ceux-ci aient souvent une sorte de drapeau --run-in-foreground).

Si vous effectuez une mise à niveau vers CentOS 7 ou autre chose avec systemd, tout devient plus facile.

Vous pouvez également rechercher des superviseurs de processus «tiers» tels que «supervord» ou «runit» que vous pouvez utiliser pour la surveillance/redémarrage de processus sur CentOS 6.

Mise à jour

Comme mangotang souligne, et j'oubliais, RHEL 6 effectivement livré avec arriviste, même si elle utilise presque exclusivement des scripts d'initialisation de style SysV. Donc, une meilleure solution serait de créer un service de démarrage à la place. Il existe des documents de prise en main raisonnables: here.

+0

Red Hat 6.7 utilise-t-il l'initialisation de System V (qui utilise inittab) ou utilise-t-il Upstart? Cette info semble indiquer que Red Hat 6.7 utilise Upstart: http://searchenterpriselinux.techtarget.com/tip/RHEL-6-ditches-System-V-init-for-Upstart-What-Linux-admins-need-to -know Est-ce que l'arriviste utilise aussi le fichier inittab? – mangotang

+0

En fait, RHEL 6 utilise * les deux *. Donc, vous pouvez réellement écrire un service parvenu à accomplir la même chose. J'oublie toujours que le support parvenu était là, parce qu'il était largement inutilisé et est parti depuis dans RHEL 7. – larsks

+0

En haut du fichier inittab de mon RHEL 6, il est écrit: '# inittab est seulement utilisé par le par défaut pour le défaut niveau d'exécution. # # AJOUTER D'AUTRES CONFIGURATIONS ICI N'AURA AUCUN EFFET SUR VOTRE SYSTÈME. » Je me demande si cela signifie que je ne peux pas m'attendre à ce que les choses inittab fonctionnent et que je doive utiliser upstart? – mangotang

0

Sur RHEL 6.X, en haut du fichier/etc/inittab il dit:

# inittab is only used by upstart for the default runlevel. 
# 
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM 

RHEL 6.x utilise Upstart à la place du système d'initialisation System V. Voir les pages de manuel pour initctl (8) et initctl (5), ou demandez à Google à propos de Upstart.