récupérer PID d'un processus lancé en bash

Bonjour,
je cherche une commande pour récupérer le PID d’un processus (cvlc) lancé en bash.
J’ai essayé quelque chose comme ça mais sans succès:

[code]monPID = $(cvlc & PID=$!)

echo $monPID[/code]

Comment pourrais-je faire?

Merci

pourquoi faire compliqué ?

cvlc &
monPID=$!

Ben, parce que je n’ai pas tout dit, je croyais pouvoir y couper… :slightly_smiling:
Bon, en fait je me lance dans un programme python et j’ai besoin de lancer cvlc en ligne de commande via ssh et de récupérer son PID pour pouvoir le tuer au moment voulu. Par exemple:

#Pour se connecter et executer une commande via ssh et le module fabric.py env.host_string = '{}'.format(IP1) env.user = '{}'.format(user1) env.password = '{}'.format(passwd1) run('cvlc macommande & echo $! > PID.txt')

Bon, là je passe par l’écriture sur un fichier car c’est plus simple pour contrôler dans mon cas.
Sauf que dans ce cas là, cvlc ne se lance pas…

Alors que si je place la même commande dans mon programme mais plus via ssh, ça fonctionne bien…

os.system('cvlc macommande & echo $! > PID.txt')

j’ai bien le bon PID dans le fichier…

D’où mon idée de trouver une autre syntaxe qui pourrait fonctionner pour mon code d’en haut…
Merci

fabfile.org/faq.html#why-can … abric-hang

Ah ouais! ça a l’air d’être ça…
Du coup faudrait que j’utilise un outil comme screen? parce que la première méthode ne va pas fonctionner…
Merci pour la piste, mais je suis encore loin de comprendre comment ça fonctionne… :s

(EDIT) Ceci dit, j’ai l’impression que si je résouds ce problème ça va me régler d’autres trucs aussi.

ce qui est bizarre c’est que ça marche bien si je rajoute un pipe derrière avec un processus qui tourne en continu, genre:

j’ai bien le bon PID dans mon fichier et je peux le tuer tranquillement…

En revanche un simple:

ou

Ne fonctionne pas… Et sinon, qu’est ce que je pourrais lancer derrière comme tâche de fond la plus invisible possible…?

Merci

Tu peux t’inspirer de la méthode proposée ici :
enregistrer-le-pid-d-una-application-t44752.html

En effet, merci vv222, ton fil est intéressant pour ce que je veux faire.
Néanmoins le problème est lié à Fabric et python et à la commande run() plus particulièrement, comme le dit le lien donné par Iroy ci-dessus…

Je l’ai pour l’instant résolu (contourné) en rajoutant un sleep en boucle infinie à la fin de la commande… :s Bon c’est pas très propre, même carrément moche… :s
Mais en attendant de trouver mieux ça marche plutôt bien. Par contre pourquoi, j’en sais rien…

J’allai justement suggérer cette méthode, elle est affreuse mais efficace :mrgreen:

pourquoi pas :

Ou pour ne pas récupérer aussi celui de fgrep :

Mais si cvlc est un shell, on peut aussi faire
echo $$
dedans.

bech : Ta méthode ne risquerait-elle pas de mettre fin à une éventuelle session de cvlc lancée en parallèle du script en plus (ou à la place) de la session lancée par le script ?

En lisant la proposition de [size=120]bech[/size] je me disais que la commande [mono]pgrep[/mono] pourrait vous intéresser.