#1 Le 07/01/2008, à 16:49
- major68
vérifier si une application est bien lancée et sinon la lancer.
Bonjour à toutes et à tous les linuxiens,
Comme c'est dit dans le sujet, je cherche à faire une petite application en shell bash ou en c pour vérifier si firefox est bien entrain de tourner, et si le test retourne faux, qu'il me le lance.
J'ai cherché et j'ai trouvé comme idée de solution de faire un ps et regarde si firefox tourne et sinon le lancer mais j'arrive pas à faire fonctionner ça...
Quelqu'un aurait une ptite idée?
Merci d'avance pour votre aide
m@JoR
#2 Le 07/01/2008, à 16:57
- marc_qui
Re : vérifier si une application est bien lancée et sinon la lancer.
salut,
ps aux pipe grep firefox
Dernière modification par marc_qui (Le 07/01/2008, à 16:58)
Hors ligne
#3 Le 07/01/2008, à 16:59
- major68
Re : vérifier si une application est bien lancée et sinon la lancer.
je fais ça en fait
ps -e | grep firefox | grep -v grep
et ça me retourne
5385 ? 00:02:50 firefox-bin
Mais comment je fais la condition la dessus?
#4 Le 07/01/2008, à 17:04
- pmdzlineur
Re : vérifier si une application est bien lancée et sinon la lancer.
j'essaierai un truc comme ça
test + x chemin firefox
ps aux > list
if un élément de la liste eq firefox
echo "firefox" tourne
else chemin/bin/firefox
fi
exit
voir les commandes shell chez //gershwin.ens.fr
je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)
Hors ligne
#5 Le 07/01/2008, à 17:23
- Sciensous
Re : vérifier si une application est bien lancée et sinon la lancer.
une solution qui marche:
ps -e | grep firefox >/dev/null; if [ $? != 0 ] ; then echo "bad"; else echo "ok"; fi
renvoi le retour du test dans un un fichier vide (puisque ne servira pas) et teste le retour d'instruction : (0 si quelquechose de trouvé et 1 sinon
#6 Le 07/01/2008, à 18:31
- pmdzlineur
Re : vérifier si une application est bien lancée et sinon la lancer.
mais comment $? est-il renseigné ? (newbie dans ce domaine)
je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)
Hors ligne
#7 Le 08/01/2008, à 09:31
- freebird
Re : vérifier si une application est bien lancée et sinon la lancer.
$? c'est le statut de ka commande précédente. Il est renseigné automatiquement à chaque fois que tu lances une commande. La valeur 0 signifie que la commande n'a pas retourné d'erreur. grep retourne 0 quand il trouve donc si tu fais $? != 0 tu ne prends que ce qui n'a pas marché.
Hors ligne
#8 Le 08/01/2008, à 09:52
- Alain.g
Re : vérifier si une application est bien lancée et sinon la lancer.
plus simplement avec l'option -q (-quiet) de grep
if ps -e | grep -q firefox
then
echo ok
else
echo bad
fi
plus simplement encore pour lancer firefox s'il ne l'est pas, sans IF :
ps -e | grep -q firefox || firefox &
avec || , la dernière commande ne sera exécutée que si le résultat de la précédente est négative. Donc pas besoin de IF en procédant ainsi.
Dernière modification par Alain.g (Le 08/01/2008, à 14:01)
Xubuntu Karmic !
Hors ligne
#9 Le 08/01/2008, à 10:57
- pmdzlineur
Re : vérifier si une application est bien lancée et sinon la lancer.
wah
je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)
Hors ligne
#10 Le 08/01/2008, à 15:15
- Sciensous
Re : vérifier si une application est bien lancée et sinon la lancer.
fortich ce alain.g
tant que tu es là , tu peux préciser les priorités dans
ps -e | grep -q firefox || firefox &
car dans cet exemple et d'autres scripts, je me demande toujours quand s'applique les || et &&
?
merci
#11 Le 08/01/2008, à 17:48
- Watchwolf
Re : vérifier si une application est bien lancée et sinon la lancer.
ca va de gauche à droite
( (ps -e | grep -q firefox) || firefox &)
Hors ligne
#12 Le 08/01/2008, à 21:16
- pmdzlineur
Re : vérifier si une application est bien lancée et sinon la lancer.
je comprend que || veut dire : "si sortie = échec, alors..."
tandis que && veut dire "si ça marche, alors..."
Dernière modification par pmdzlineur (Le 08/01/2008, à 21:17)
je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)
Hors ligne
#13 Le 09/01/2008, à 10:13
- Sciensous
Re : vérifier si une application est bien lancée et sinon la lancer.
je comprend que || veut dire : "si sortie = échec, alors..."
tandis que && veut dire "si ça marche, alors..."
exact
@pmdzlineur
donc pas de risque de comprendre un:
ps -e | (grep -q firefox || firefox &) par exemple ?
#14 Le 10/01/2008, à 08:45
- busterbel
Re : vérifier si une application est bien lancée et sinon la lancer.
Bonjour à vous tous,
Je suis nouveau depuis le 30/12/07 dernier en Linux.
J'ai une application nommé news qui tourne 24h/24 sous linux ubuntu bien evidement.
Parfois, elle se plante ... donc ce post m'intéresse très fort.
Donc, dans mon cas, ce serait cette ligne à insérer ou à exécuter si je comprend bien :
ps -e | grep -q news || news &
mais o๠mettre ces codes ??? créer un script ? Comment faire, quelle est la démarche à suivre ?
Merci d'avance de votre aide.
ps -e | grep -q firefox || firefox &
Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+
Hors ligne
#15 Le 10/01/2008, à 09:00
- pmdzlineur
Re : vérifier si une application est bien lancée et sinon la lancer.
tu crées un fichier texte sur ton bureau
dedans tu écris
#!/bin/bash
la commande
exit
tu enregistres et renommes
clic droit propriété, rendre le fichier executable
ou
en console
chmod +x chemin/fichier
quand tu cliquera dessus il se lancera
pour le fichiers shell c'est
#!/bin/sh
et renommer en fichier.sh
Dernière modification par pmdzlineur (Le 10/01/2008, à 09:02)
je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)
Hors ligne
#16 Le 10/01/2008, à 09:53
- busterbel
Re : vérifier si une application est bien lancée et sinon la lancer.
Merci à toi pmdzlineur pour ta réponse immédiate.
Suis nouveau en linux, donc pas tout compris ... préfère redemander pour des précisions avant de faire des bêtises.
- Je dois créer 1 ou 2 fichiers ? car tu me parles d'abord de créer un fichier texte dans mon bureau avec dedans #!/bin/bash et puis un fichier shell avec dedans "#!/bin/sh" ... ?
Ou je dois créer un ou l'autre ?
- Je dois mettre simplement çà dans mon fichier ? Est-ce suffisant ?
#!/bin/sh
ps -e | grep -q news || news &
Merci d'avance pour tes précisions. Bien à toi,
Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+
Hors ligne
#17 Le 10/01/2008, à 13:30
- pmdzlineur
Re : vérifier si une application est bien lancée et sinon la lancer.
c'était une explication globale
dont oui tu crées un fichier comme ça
#!/bin/sh
ps -e | grep -q news || news &
exit
tu renommes en renews.sh
tu rends executable
Tu ne risques pas grand chose
tu peux essayer ta commande d'abord en terminal,
d'abord est ce que news lance bien news
donc essaie en terminal
news
puis
arrêt de news pour test :
ps aux
tu trouves le PID de news
tu fais
kill "PID_news" (ou sudo kill news si root est exigé) (ici le PID_news = 4 chiffres, pas de "")
ton processus est arrêté
cd /home/mon_user/Desktop (si ton fichier est sur Desktop ou Bureau si français)
./renews.sh
si il y a des erreurs le terminal le dira; le exit sort normalement le statut de la dernière commande (0 si succès, 1 si échec)
Mais je suis très newbie là dedans (et sous linux depuis 2 ans), je suis en train de bosser ça depuis 15 jours
Dernière modification par pmdzlineur (Le 10/01/2008, à 13:32)
je ne suis pas informaticien, juste utilisateur un peu averti ;-)
http://www.freemedforms.com/fr/start
http://code.google.com/p/rapidcomptamed/
médecin volant, mais pas en même temps ;-)
Hors ligne
#18 Le 10/01/2008, à 13:45
- busterbel
Re : vérifier si une application est bien lancée et sinon la lancer.
Impec merci, c'est très clair.
J'essaie çà ce soir et je te tiens au courant.
@+
Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+
Hors ligne
#19 Le 10/01/2008, à 16:30
- Alain.g
Re : vérifier si une application est bien lancée et sinon la lancer.
Tu n'a pas du comprendre, car à moins que le script soit lancé régulièrement, ça ne servira à rien pour ce que tu souhaites...
Tu peux faire une boucle infini :
while true ; do news ; done
si news s'arrête, il sera relancé immédiatement.
Xubuntu Karmic !
Hors ligne
#20 Le 10/01/2008, à 19:54
- busterbel
Re : vérifier si une application est bien lancée et sinon la lancer.
Salut Alain.g
Peut-être j'ai pas dû tout comprendre...
ou dois-je mettre ton code ?
peux-tu m'expliquer clairement, merci.
Dernière modification par busterbel (Le 10/01/2008, à 19:55)
Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+
Hors ligne
#21 Le 11/01/2008, à 14:02
- busterbel
Re : vérifier si une application est bien lancée et sinon la lancer.
Up
Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+
Hors ligne
#22 Le 11/01/2008, à 14:31
- nowan
Re : vérifier si une application est bien lancée et sinon la lancer.
Hello,
Tu entends quoi par le mettre o�
ce que tu peux faire c'est avoir un fichier /home/tonUser/renew.sh
qui contient
#!/bin/sh
while true ; do news ; done
que tu rends executable à l'aide de la commande
chmod +x /home/tonUser/renew.sh
(x pour eXecutable)
comme la commande news est bloquante, à chaque fois que news rendra la main (fermeture normale ou crash) la commande news sera à nouveau lancée.
Ensuite, si tu veux, tu peux en faire un service, mais là y a la documentation (une piste: /etc/init.d/)
wala ;-)
Dernière modification par nowan (Le 11/01/2008, à 14:32)
Hors ligne
#23 Le 11/01/2008, à 14:36
- Fake
Re : vérifier si une application est bien lancée et sinon la lancer.
Alain.g te propose un autre script completement différent... il s'agit donc d'un autre fichier commancant lui aussi par #!/bin/sh
Alain.g a raison...
Le script que tu as créé avec la commande "ps -e | grep -q news || news &" relance news que au moment ou tu le lance lui même... le seul plus est qu'il vérifie si nexs est déja lancé ou non...
Pour faire un script qui relance news auomatiquement tout le temps, il faut faire une boucle infinie qui relance news a chaque fois... du type
while true ; do news ; done
Cependant on risque de lancer plusieurs occurences de news... c'est peut etre genant... surtout qu'il risque d'y en avoir vite beaucoup si tel est le cas... :-)
Je dirais donc une combinaison des deux serait le mieux...
while true ; do
ps -e | grep -q news || news &
done
:-)
[edit] autant pour moi je ne savais pas que news était blocante... :-)
Dernière modification par Fake (Le 11/01/2008, à 14:39)
Hors ligne
#24 Le 11/01/2008, à 15:09
- Alain.g
Re : vérifier si une application est bien lancée et sinon la lancer.
Je dirais donc une combinaison des deux serait le mieux...
while true ; do ps -e | grep -q news || news & done
surtout pas comme cela, la vérification se ferait en continu : il faudrait au moins ajouter "sleep" pour faire une pause (ou utiliser cron)
Xubuntu Karmic !
Hors ligne
#25 Le 11/01/2008, à 16:56
- busterbel
Re : vérifier si une application est bien lancée et sinon la lancer.
Merci à vous tous Fake, nowan et Alain.g et les autres ...
Juste...
O๠je peux mettre le "sleep" (pour faire une pause je présume)...
ex : toutes les 5 minutes, le script vérifie si mon application news est active,
SI elle ne l'est pas (ou plus), ALORS le script la relance automatiquement. Qu'en pensez-vous ?
ou utiliser ... cron mais je ne sais pas comment çà fonctionne et il diffère de koi par rapport à "sleep" ?
Encore Merci à vous,
Fake a écrit :Je dirais donc une combinaison des deux serait le mieux...
while true ; do ps -e | grep -q news || news & done
surtout pas comme cela, la vérification se ferait en continu : il faudrait au moins ajouter "sleep" pour faire une pause (ou utiliser cron)
Dernière modification par busterbel (Le 11/01/2008, à 17:19)
Busterbel
Newbie depuis le 30/12/07
Ubuntu 6.10-Athlon 2200+
Hors ligne