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.
Le PID de la dernière commande exécutée est dans le $!
Variable shell:
my-app &
echo $!
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)"
Essayez quelque chose comme
pidof my_app >> /tmp/my_app.pid
Vous pouvez également utiliser pkill pour cela Avec pkill, vous pouvez simplement spécifier le nom du processus et éviter d'obtenir le pid