Relancer un processus si il plante - Linux et OS Alternatifs
Marsh Posté le 23-04-2004 à 11:33:10
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
Marsh Posté le 23-04-2004 à 11:46:45
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 |
Marsh Posté le 23-04-2004 à 12:19:18
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.
Marsh Posté le 23-04-2004 à 13:09:53
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 :
|
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
++
Marsh Posté le 23-04-2004 à 14:08:50
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.
Marsh Posté le 23-04-2004 à 14:23:08
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
Marsh Posté le 23-04-2004 à 14:36:55
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
Marsh Posté le 23-04-2004 à 14:54:35
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é??
Marsh Posté le 23-04-2004 à 15:02:23
ben dans ce cas, faut que tu utilises des verrous (fichier)
Marsh Posté le 23-04-2004 à 15:03:39
Citation : ben dans ce cas, faut que tu utilises des verrous (fichier) |
heu ... c'est à dire ???
Marsh Posté le 23-04-2004 à 15:15:02
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 ...
Marsh Posté le 23-04-2004 à 17:12:46
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 |
oui mais comme c'est le script qui les redemarre et que lui meme est relancé automatiquement tu n'as rien à faire... jamais...
Marsh Posté le 23-04-2004 à 17:16:12
bobuse a écrit : ben quand ton script démarre, il dépose un fichier temporaire portant par exemple comme nom mrtg_1.$$ |
ç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.
Marsh Posté le 23-04-2004 à 11:31:00
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