OVH Cloud OVH Cloud

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 ?

1 réponse

1 2
Avatar
Benoit Izac
Bonjour,

le 12/04/2015 à 11:25, Sergio a écrit dans le message
<552a3a08$0$3320$ :

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



Oui mais comme ps -C, pgrep ou pidof ne sont pas standards. Après, ps
est un mauvais exemple vu que les BSD ne respectent pas POSIX sur cette
commande (ps -A -o comm devrait fonctionner par contre).

--
Benoit Izac
1 2