Comment superviser et redémarrer automatiquement un processus?

30

Je souhaite avoir un processus qui sera redémarré s’il plante. J'ai un peu googlé et trouvé une solution facile à utiliser daemontools .

Je n'ai pas compris comment le configurer.

  1. Quelle est la manière la plus simple d’accomplir une telle fonctionnalité?
  2. Comment le configurer?
posée opc0de 05.02.2013 - 13:02
la source

5 réponses

26

Cette réponse s'applique aux versions d'Ubuntu avec Upstart (& lt; = 14.10). Utilisez une autre approche pour les versions avec Systemd (& gt; = 15.04).

Il semble que vous recherchiez une fonctionnalité déjà fournie dans Ubuntu avec Upstart . La strophe respawn dans la configuration fera exactement ce dont vous avez besoin. Je déconseille l'utilisation d'une méthode moins standard pour y faire face.

Sans plus de détails sur le processus que vous essayez de gérer, il est difficile de dire à quoi la configuration doit ressembler. Cela dépend si elle se faufile et se met en arrière-plan par exemple. La documentation Upstart sur la strophe respawn devrait vous donner plus d'informations.

Malheureusement, il n’est pas encore possible d’exécuter correctement les jobs utilisateur: ne peut pas démarrer exécuter le travail utilisateur

exemple

Supposons que nous voulons conserver l’application de la calculatrice, même s’il est tué par le feu (signal 9).

  1. Créez un fichier de configuration dans /etc/init/calculator.conf (basé sur cet article ):

    #!upstart
    description "Calculator"
    
    # Start job via the daemon control script. Replace "gert" with your username.
    exec su -l gert -c 'export DISPLAY=:0; /usr/bin/gnome-calculator'
    
    # Restart the process if it dies with a signal
    # or exit code not given by the 'normal exit' stanza.
    respawn
    
    # Give up if restart occurs 10 times in 90 seconds.
    respawn limit 10 90
    
  2. Lancez-le en cours d'exécution

    sudo start calculator
    
  3. Il s’ouvre sur votre écran actuel ( :0 ) et apprécie la qualité en le redémarrant après sa fermeture.

    • Identifiez l'identifiant du processus, par ex. en faisant ps aux | grep calculator :

      gert  13695 0.2 0.4 349744 16460 ?   Sl   13:38   0:00 /usr/bin/gnome-calculator
      
    • Tue-le avec le feu.

      sudo kill -9 13695
      
    • Regardez-le réapparaître:

      gert  16059 4.6 0.4 349736 16448 ?   Sl   13:40   0:00 /usr/bin/gnome-calculator
      

Notez que cela sera plus élégant avec les plans pour les plans Ubuntu 13.04 avec un support approprié du Job Utilisateur.

    
réponse donnée gertvdijk 05.02.2013 - 13:11
la source
9

Un outil extrêmement simple pouvant accomplir le même effet sans configuration est immortal : lien

Exécutez simplement la commande comme ceci:

immortal <cmd>

Il s'exécutera en arrière-plan et redémarrera automatiquement s'il se ferme.

  • immortalctl : affiche le statut des travaux en cours d'exécution. Il y a une colonne name qui sera imprimée ici, vous pouvez l'utiliser pour faire référence au travail avec d'autres commandes de contrôle.
  • immortalctl stop <name> : arrête de surveiller le travail avec le nom donné (il ne sera pas automatiquement redémarré, mais le processus en cours continuera à s'exécuter)
  • immortalctl -k <name> : envoie SIGKILL au processus en cours.
  • immortalctl exit <name> : arrête de surveiller le travail avec le nom donné et le supprime de la liste des travaux.
réponse donnée extropic-engine 16.05.2017 - 20:58
la source
0

Il existe un moyen sans "Upstart". Le mot-clé est "inittab" :-). Bien que ce fichier ne soit généralement pas modifié par défaut, il peut être utilisé pour obtenir la ré-impression souhaitée sur les machines SYSV.

    
réponse donnée cepal67 15.06.2015 - 18:08
la source
0

ps-watcher est un outil qui surveille les processus en cours d'exécution et exécute une action dans des circonstances définies. Installez-le:

apt-get install ps-watcher

Voir le bas de Exécuter HHVM avec un retour à PHP-FPM pour plus de détails. a bien fonctionné pour moi.

    
réponse donnée Firegarden 19.09.2017 - 03:33
la source
0

Les processus de démarrage et de reprise sont gérés par "systemd" depuis Ubuntu 15.04, une bonne introduction peut être trouvée ici

lien

un exemple de démarrage est disponible sur

lien

Cette approche remplace les plus anciennes basées sur / etc / inittab et upstart.

    
réponse donnée Nikolaus Correll 04.07.2018 - 17:24
la source

Lire d'autres questions sur les étiquettes