Tester si un programme est en cours d'exécution
Le
Geo Cherchetout

Bonjour,
Je voudrais lancer une commande dans le cas où Seamonkey serait en cours
d'exécution mais je ne trouve pas la bonne syntaxe, même après avoir lu le
chapitre relatif aux tests ici : http://abs.traduc.org/abs-fr/ch07.html
Un exemple de mes essais manqués :
$ if [ ps -C seamonkey ]; then echo "seamonkey tourne"
> ^C
Un petit coup de pouce svp ?
Je voudrais lancer une commande dans le cas où Seamonkey serait en cours
d'exécution mais je ne trouve pas la bonne syntaxe, même après avoir lu le
chapitre relatif aux tests ici : http://abs.traduc.org/abs-fr/ch07.html
Un exemple de mes essais manqués :
$ if [ ps -C seamonkey ]; then echo "seamonkey tourne"
> ^C
Un petit coup de pouce svp ?
le 11/04/2015 à 16:24, Geo Cherchetout a écrit dans le message
Il te manque « ; fi » mais ça ne fonctionnera pas.
ps -C seamonkey && echo "seamonkey tourne"
ou
ps -C seamonkey
if [ $? = 0 ]; then
echo "seamonkey tourne"
else
echo "seamonkey ne tourne pas"
fi
--
Benoit Izac
le 11/04/2015 à 16:24, Geo Cherchetout a écrit dans le message
Il te manque « ; fi » mais ça ne fonctionnera pas.
ps -C seamonkey && echo "seamonkey tourne"
ou
ps -C seamonkey
if [ $? -eq 0 ]; then
echo "seamonkey tourne"
else
echo "seamonkey ne tourne pas"
fi
--
Benoit Izac
Impec, merci beaucoup.
le 11/04/2015 à 17:13, Geo Cherchetout a écrit dans le message
On peut faire également plus simplement :
if ps -C seamonkey; then
...
Après, le problème c'est que ps -C xxx (qui n'est pas POSIX) renvoie
toujours quelque chose sur la sortie standard et qu'il faut s'en
débarrasser via du « >/dev/null ». Le mieux reste donc de filter à la
source, c'est à dire :
1. demander à ps de ne lister que l'essentiel (le nom des processus)
2. regarder si l'on trouve notre bonheur (grep est le roi pour ça)
if ps -eo comm | grep -q seamonkey; then
...
fi
--
Benoit Izac
$ if ps -C seamonkey >/dev/null; then echo "seamonkey tourne"; fi
seamonkey tourne
Ça me plaît bien aussi. :-)
Pour ma part j'utilise "pidof nom_du_programme".
Ça revient au même au final.
--
mireero
Testé et approuvé, merci.
Attention toutefois en généralisant à d'autres noms que « seamonkey », il
me semble que ce grep attrape tout ce qui _contient_ cette chaîne, donc
potentiellement d'autres processus (avec seamonkey le risque est faible).
Je pense que « grep -q ^seamonkey$ » conviendrait.
(Il y a pgrep -x seamonkey qui ferait le travail, mais pas moyen de lui
couper sa sortie.)
--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
C'est mieux avé les accents (F. Patte)
J'ai noté également :)
Merci !
--
jp willm
http://perso.orange.fr/willms/index.html
On peut utiliser pgrep (qui est fait pour ça)
if pgrep seamonkey; then
--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org