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 ?
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Benoit Izac
Le #26348745
Bonjour,

le 11/04/2015 à 16:24, Geo Cherchetout a écrit dans le message

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





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
Benoit Izac
Le #26348744
Bonjour,

le 11/04/2015 à 16:24, Geo Cherchetout a écrit dans le message

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





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
Geo Cherchetout
Le #26348749
Le 11/04/2015 16:45, *Benoit Izac* a écrit fort à propos :

ps -C seamonkey && echo "seamonkey tourne"

ou

ps -C seamonkey
if [ $? -eq 0 ]; then
echo "seamonkey tourne"
else
echo "seamonkey ne tourne pas"
fi



Impec, merci beaucoup.
Benoit Izac
Le #26348765
Bonjour,

le 11/04/2015 à 17:13, Geo Cherchetout a écrit dans le message

ps -C seamonkey && echo "seamonkey tourne"

ou

ps -C seamonkey
if [ $? -eq 0 ]; then
echo "seamonkey tourne"
else
echo "seamonkey ne tourne pas"
fi



Impec, merci beaucoup.



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
Geo Cherchetout
Le #26348772
Le 11/04/2015 18:39, *Benoit Izac* a écrit fort à propos :

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 ».



$ if ps -C seamonkey >/dev/null; then echo "seamonkey tourne"; fi
seamonkey tourne

Ça me plaît bien aussi. :-)
mireero
Le #26348803
On 04/11/2015 06:54 PM, Geo Cherchetout wrote:
Le 11/04/2015 18:39, *Benoit Izac* a écrit fort à propos :

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 ».



$ 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
Geo Cherchetout
Le #26348830
Le 12/04/2015 01:59, *mireero* a écrit fort à propos :

Pour ma part j'utilise "pidof nom_du_programme".
Ça revient au même au final.



Testé et approuvé, merci.
Lucas Levrel
Le #26348839
Le 11 avril 2015, Benoit Izac a écrit :

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



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)
jp willm
Le #26348837
Le 12/04/2015 01:59, mireero a écrit :


Pour ma part j'utilise "pidof nom_du_programme".
Ça revient au même au final.




J'ai noté également :)

Merci !

--
jp willm
http://perso.orange.fr/willms/index.html
Sergio
Le #26348840
Le 11/04/2015 18:39, Benoit Izac a écrit :

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



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
Publicité
Poster une réponse
Anonyme