Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2972 connectés 

 


Dernière réponse
Sujet : Relancer un processus si il plante
francoisp

bobuse a écrit :

ben quand ton script démarre, il dépose un fichier temporaire portant par exemple comme nom mrtg_1.$$
 
$$ étant le pid du process.
 
Et quand tu check, tu verifies pour tes n fichiers verrous, si les process correspondant sont toujours là. Si non, tu enlèves le fichier, et tu relance le mrtg avec le bon paramètre (grâce au numéro que tu à récupéré sur le nom du fichier).
 
C'est juste une proposition, je sais pas si c'est la meilleure solution ... :)


 
ça balanche beaucoup de fichiers et donc d'acces disque c'est ça qui est pas super... pour mrtg c'est pas trop genant ça bouffe pas de ressources immences mais parfois... ça peu beaucoup ralentir des applications utilisant des fichiers verrous.
 


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
francoisp

bobuse a écrit :

ben quand ton script démarre, il dépose un fichier temporaire portant par exemple comme nom mrtg_1.$$
 
$$ étant le pid du process.
 
Et quand tu check, tu verifies pour tes n fichiers verrous, si les process correspondant sont toujours là. Si non, tu enlèves le fichier, et tu relance le mrtg avec le bon paramètre (grâce au numéro que tu à récupéré sur le nom du fichier).
 
C'est juste une proposition, je sais pas si c'est la meilleure solution ... :)


 
ça balanche beaucoup de fichiers et donc d'acces disque c'est ça qui est pas super... pour mrtg c'est pas trop genant ça bouffe pas de ressources immences mais parfois... ça peu beaucoup ralentir des applications utilisant des fichiers verrous.
 

francoisp

pkdev a écrit :

ouai je comprend ce que tu veux dire mais ca m oblige a kill tous les process et moi j en ai plus d une dizaine et donc fo redémarrer les 10 après
 
i serait pas possible de ne redémarrer que le proc qui a planté??


 
oui mais comme c'est le script qui les redemarre et que lui meme est relancé automatiquement tu n'as rien à faire... jamais...

bobuse ben quand ton script démarre, il dépose un fichier temporaire portant par exemple comme nom mrtg_1.$$
 
$$ étant le pid du process.
 
Et quand tu check, tu verifies pour tes n fichiers verrous, si les process correspondant sont toujours là. Si non, tu enlèves le fichier, et tu relance le mrtg avec le bon paramètre (grâce au numéro que tu à récupéré sur le nom du fichier).
 
C'est juste une proposition, je sais pas si c'est la meilleure solution ... :)
pkdev

Citation :

ben dans ce cas, faut que tu utilises des verrous (fichier)


 
heu ... c'est à dire ???

bobuse ben dans ce cas, faut que tu utilises des verrous (fichier)
pkdev ouai je comprend ce que tu veux dire mais ca m oblige a kill tous les process et moi j en ai plus d une dizaine et donc fo redémarrer les 10 après
 
i serait pas possible de ne redémarrer que le proc qui a planté??
francoisp Non il suffit de recuperer les nombre de PID des process mrtg parceque si un seul manque (planté il faut de toute façon) tous les relancer.
 
il faut tester la presence de l'enssemble des x processus
genre (dans le cas ou tu en a 6)...
if [ `ps -ef | grep mrtg | wc` -lt 6 ]; then
#cas ou manque un des 6 process si il y en a 6 normalement
....
killall mrtg
killall $0
exit 1
else
#ne rien faire
fi
 
pkdev oui je veux bien mais je le récupère comment le PID pcq le nom du processus c'est MRTG dans tous les cas
francoisp oui exactement il suffit de verifier les PID et si un n'est plus present alors stopper l'enssemble proprement.
 
et comme ça le respawn dans l'inittab relance le script et donc la generation des process du manager mrtg.
pkdev merci de votre aide
 
je vais essayer d etre un pe plus préci sur mon script pcq je pense que ce que vous m'avez di ne fonctionnerai pas dans mon cas
 
j'ai donc placé ce script ds /etc/rc.d/init.d
et j ai fai des liens ds /etc/rc3.d

Code :
  1. #!/bin/sh
  2. env LANG=C /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/bin/cfg/mrtg-134.3.2.1.cfg
  3. env LANG=C /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/bin/cfg/mrtg-134.3.2.2.cfg
  4. env LANG=C /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/bin/cfg/mrtg-134.3.2.3.cfg
  5. env LANG=C /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/bin/cfg/mrtg-134.3.2.4.cfg
  6. ....


et le pb c'est que certain des processus générer par ces commandes plante mais j aimais tous en meme tps il fodrai ke je récupere le PID de chacun pour vérifier s'il tourne ou pas
 
enfin je vai essayer ac vos conseil et je verai si ca marche
 
++

francoisp le plus simple c'est que tu lances tes divers process depuis l'inittab en mode respawn
 
comme ça ton script doit aussi controler les processus et si un d'eux est stoppé ou tué, il tue ses divers process et lui meme.  
 
le mode respwn fait qu'il renait de lui meme et donc relance les processus.
bobuse pour vérifier toutes les deux minutes :

while [ 1 ]; do /sbin/pidof nom_du_process > /dev/null || _truc_a_faire_pour_le_relancer; sleep 2m; done

pkdev désolé je viens de m apercevoir que j avais mi mon post a la racine de OSA
 
si un modo pouvai le déplacer dsn OSA/Scripts...
 
merci
pkdev salut tlm
 
alors j ai fait un script qui démare plusieurs processus correspondant chaqun à une tache différente qui tourne constament
 
mon pb c que au bout de qques heures certains de ces processus st arrétes
 
je voudrai pouvoir vérifier s'ils tournent et les relancer si ce n'est pas le cas
 
merci de votre aide
 
++
 
PkDeV

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)