web-dev-qa-db-fra.com

Comment obtenir le pid de la dernière commande exécutée dans le script Shell?

Je veux avoir un script Shell comme celui-ci:

my-app &
echo $my-app-pid

Mais je ne sais pas comment obtenir le pid de la commande qui vient d'être exécutée.

Je sais que je peux simplement utiliser le jobs -p my-app commande pour grep le pid. Mais si je veux exécuter le shell plusieurs fois, cette méthode ne fonctionnera pas. Parce que jobspec est ambigu.

274
David S.

Le PID de la dernière commande exécutée est dans le $! Variable shell:

my-app &
echo $!
364
enzotib

Obtenez PID:

#!/bin/bash
my-app &
echo $!

Enregistrez PID dans la variable:

#!/bin/bash
my-app &
export APP_PID=$!

Enregistrez toutes les instances PID dans un fichier texte:

#!/bin/bash
my-app &
echo $! >>/tmp/my-app.pid

Enregistrez la sortie, les erreurs et PID dans des fichiers séparés:

#!/bin/bash
my-app >/tmp/my-app.log 2>/tmp/my-app.error.log &
echo $! >>/tmp/my-app.pid

echo "my-app PID's: $(cat /tmp/my-app.pid)"
71
Eduardo Cuomo

Essayez quelque chose comme

pidof my_app >> /tmp/my_app.pid
3
Piyush Jain

Vous pouvez également utiliser pkill pour cela Avec pkill, vous pouvez simplement spécifier le nom du processus et éviter d'obtenir le pid

https://linux.die.net/man/1/pkill

0
yath