Redémarrage des processus Linux automatiquement

Fermé
guillaumegilbertsoucy Messages postés 327 Date d'inscription vendredi 11 octobre 2013 Statut Membre Dernière intervention 6 mai 2024 - Modifié le 30 janv. 2023 à 13:37
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 - 30 janv. 2023 à 13:46

Bonjour,

J'ai besoin de savoir comment m'y prendre pour avoir les processus responsable de la diffusion de contenu en streaming redémarré lorsque que ceux-ci plantent.

Le VM tourne Ubuntu server 20.04 LTS.

J'ai entendu parler de respawn mais je suis pas certain comment l'implanter.

Il y a des exemples mais faut comprendre que dans mon cas:

  1. Le serveur démarre.
  2. 600 secondes s'écoulent.
  3.  le script démarrant toutes les diffusions s'exécute.

Voici deux lignes de ce script comme exemple:

icecast2 -c /etc/icecast2/icecast0.xml -b && ezstream -c /mnt/disk/webradio_config/zawackradio0.xml &
icecast2 -c /etc/icecast2/icecast1.xml -b && ezstream -c /mnt/disk/webradio_config/zawackradio1.xml &

Ici, on suggère d'utiliser respawn :

myprocess:2345:respawn:/bin/myprocess

C'est parce que le PID de zawackradio0 n'est jamais le même. Si je lui dis "regarde si 2345 est toujours là" au prochain redémarrage, si 2345 est 2355, quelque chose à quelque part doit dire a respawn "regarde maintenant pour 2355" puisque zawackradio0 est maintenant 2355.

Merci pour votre aide.

Merci,
Guillaume

A voir également:

1 réponse

mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
30 janv. 2023 à 13:46

Bonjour,

Tu as mal compris ce que signifiait la ligne suivante :

myprocess:2345:respawn:/bin/myprocess

Celle-ci est spécifique au fichier de configuration /etc/inittab, dont tu peux voir la documentation avec la commande :

man inittab

Dans ton exemple, 2345 n'a rien à voir avec le PID, c'est une liste de run levels (correspondant à chacun des dossiers /etc/rc*.d). Certains runlevels sont standardisés (0 pour l'extinction, 6 pour le reboot). Généralement 1 signifie un démarrage en mode dégradé. Sous Debian et les distributions qui en dérive, 2 correspond au runlevel utilisé pour un démarrage ordinaire, mais selon la distribution, cela peut différer.

Ici, l'instruction de ton exemple s'applique donc aux runlevels 2, 3, 4, et 5, donc tous ceux qui ont rapport avec une forme de démarrage. Cela n'a donc rien à voir avec le PID. De manière générale, le PID ne peut pas être prédit de manière absolue. C'est le système d'exploitation qui le choisit en fonction des PIDs non utilisés et du niveau de privilège de l'utilisateur. Si tu veux scripter une commande basée sur un PID, il faut au préalable récupérer le PID de l'application en question par exemple avec la commande pidof. Note que si l'application a crashé, elle n'a plus de PID.

Ensuite le chemin que tu as décidé de prendre m'étonne un peu. Si j'ai bien compris ce que tu veux faire, tu veux relancer en cas de plantage icecast. Il vaudrait peut être mieux comprendre pourquoi icecast plante et résoudre cette cause, plutôt que de relancer icecast en espérant que ça marche. Le point de départ serait alors de regarder dans les logs d'icecast.

Bonne chance

0