|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Inscription : septembre 2006 Messages : 45 ![]() |
Bonjour,
Dans un script Shell sh, je lance un processus en tâche de fond, et je note son PID avec la commande $! : proc_id=$! Pour tester si ce processus tourne toujours, actuellement j'utilise un ps suivi d'un grep : present=`ps -ef -o pid | grep $proc_id` Cependant, cette commande est buguée : par exemple si mon PID est 28, que le processus s'est arrêté, mais que j'ai un processus ayant pour PID 128, le grep va le retourner, et ainsi je vais considérer que mon processus tourne toujours. Comment puis-je savoir qu'un processus dont le PID est connu tourne ou non ? |
|
|
00
|
|
|
#2 |
|
Futur Membre du Club
![]() Inscription : septembre 2006 Messages : 45 ![]() |
En fait je pense que j'ai trouvé :
present=`ps -ef -o pid | grep '^$proc_id$'` En ajoutant ^ et $, je sais que mon ID n'est pas contenu dans un autre |
|
|
00
|
|
|
#3 | ||||
|
Membre expérimenté
![]() Inscription : mars 2007 Messages : 469 ![]() |
Une façon de gérer ça
exemple de script : Code :
Résultat : Code :
__________________
Loi de Murphy: La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi. La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi. |
||||
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 969 ![]() |
"wait" est la bonne solution si on veut un appel bloquant. Dans le cas contraire, une solution plus simple que le "ps ... | grep ..." consiste à utiliser "kill -0" :
Code :
|
||
|
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Inscription : septembre 2006 Messages : 45 ![]() |
Merci, effectivement le wait et le kill -0 sont plus propres que le ps | grep
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com