it-swarm.com.de

Wie erhalte ich die PID des zuletzt ausgeführten Befehls im Shell-Skript?

Ich möchte ein Shell-Skript wie dieses haben:

my-app &
echo $my-app-pid

Aber ich weiß nicht, wie ich die PID des gerade ausgeführten Befehls bekomme.

Ich weiß, ich kann nur die jobs -p my-app Befehl zum Grep der PID. Wenn ich die Shell jedoch mehrmals ausführen möchte, funktioniert diese Methode nicht. Weil das jobspec nicht eindeutig ist.

274
David S.

Die PID des zuletzt ausgeführten Befehls befindet sich in $! Shell-Variable:

my-app &
echo $!
364
enzotib

Holen Sie sich PID:

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

Speichern Sie PID in der Variablen:

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

Speichern Sie alle Instanzen PID in einer Textdatei:

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

Speichern Sie Ausgabe, Fehler und PID in getrennten Dateien:

#!/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

Versuchen Sie etwas wie

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

Sie können auch pkill verwenden. Mit pkill können Sie einfach den Prozessnamen angeben und vermeiden, die pid zu erhalten

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

0
yath