5 votes

Obtenir l'identifiant du processus dans un script Shell lorsqu'un processus est lancé au premier plan

Dans un programme shell, je veux lancer un programme, obtenir son PID et le sauvegarder dans un fichier temporaire. Mais ici, je lancerai le programme au premier plan et ne quitterai pas le shell tant que le processus ne sera pas en cours d'exécution.

ex :

 #!/bin/bash

 myprogram &
 echo "$!"  > /tmp/pid

Et cela fonctionne bien, je suis capable d'obtenir le pid du processus lancé. Mais si je lance le programme au sol, je voudrais savoir comment récupérer le pid.

ex :

#!/bin/bash

myprogram       /// hear some how i wan to know the PID before going to next line

12voto

anubhava Points 172509

Comme je l'ai indiqué plus haut, étant donné que votre commande est toujours en cours d'exécution au premier plan, vous ne pouvez pas entrer une nouvelle commande dans le même shell et passer à la ligne suivante.

Cependant, lorsque cette commande est en cours d'exécution et que vous souhaitez obtenir l'identifiant du processus de ce programme à partir d'un autre processus de l'onglet ou de la fenêtre du shell, utilisez la commande suivante pgrep comme ceci :

pgrep -f "myprogram"
17113 # this # will be different for you :P

EDIT : Sur la base de votre commentaire or is it possible to launch the program in background and get the process ID and then wait the script till that process gets exited ?

Oui, c'est possible en utilisant wait pid comme suit :

myprogram &
mypid=$!
# do some other stuff and then
wait $mypid

0voto

Paul Evans Points 8997

Vous ne pouvez pas faire cela car votre shell script n'est pas en cours d'exécution -- la commande que vous venez de lancer au premier plan l'est.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X