Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

11 réponses
Avatar
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 ?

10 réponses

1 2
Avatar
Benoit Izac
Bonjour,

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

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
Avatar
Benoit Izac
Bonjour,

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

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
Avatar
Geo Cherchetout
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.
Avatar
Benoit Izac
Bonjour,

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

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
Avatar
Geo Cherchetout
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. :-)
Avatar
mireero
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
Avatar
Geo Cherchetout
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.
Avatar
Lucas Levrel
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)
Avatar
jp willm
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
Avatar
Sergio
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
1 2