Wie bekomme ich eine Eltern-PID von einer bestimmten Kinder-PID?
Ich weiß, dass ich es unter / proc vollständig überprüfen kann. Ich frage mich, ob es einen cleveren / besseren Weg gibt, dies in Ubuntu zu erreichen. Beachten Sie, dass die Eltern möglicherweise getötet werden oder nicht.
Vielen Dank
command-line
bash
process
Zwischenspeicher
quelle
quelle
ps -o args ...
die Ergebnisse zu nutzen, aber das riecht ein bisschen.ppid=
aber vor dem PID scheint notwendig zu sein. Ich habe unterschiedliche Ergebnisse erhalten, wenn ich es weggelassen habe.Verwenden Sie nur die Shell- Variable, um die übergeordnete PID zu erhalten:
Wenn Sie den Befehl von dieser übergeordneten PID benötigen:
Wenn Sie die vollständige Befehlszeile benötigen (mit allen Optionen):
Erläuterung
$PPID
Wird von der Shell definiert, ist es die PID des übergeordneten Prozesses/proc/
haben Sie einige Verzeichnisse mit der PID der einzelnen Prozesse. Wenn Sie dies tuncat /proc/$PPID/comm
, geben Sie den Befehlsnamen der PID wiederCheck man proc
quelle
PPID
die als Teil des POSIX-Standards definiert ist. Daher sollte jede POSIX-kompatible Shell dies entsprechend einstellen. Siehe pubs.opengroup.org/onlinepubs/9699919799/utilities/…Verwendung
pstree
nach BefehlsnameMithilfe von können
pstree
Sie nach dem Namen des untergeordneten Prozesses suchen und die Prozess-ID (PID) zusammen mit den Eltern, Großeltern und allen untergeordneten Elementen des untergeordneten Prozesses abrufen:In diesem Fall
sleep
ist der untergeordnete Befehl und es ist PID8414
. Die Eltern-ID lautet 841 und heißtdisplay-auto-brightness
. Der Großelternteil ist eine Shell (sh
) mit einer Prozess-ID von839
. Der Urgroßvater hatcron
eine Prozess-ID von795
. Die Ur-Ur-Großeltern haben auchcron
eine Prozess-ID von763
.Wenn Sie nach der Prozess-ID
sleep
anstelle des Namens suchen möchten, können Sie Folgendes verwenden:Beachten Sie, dass die
sleep
Prozess-ID in geändert wurde14653
. Das übergeordnete Element (PID 841) schläft 1 Minute lang, wacht für einen Sekundenbruchteil auf und startet dann einen neuensleep
Befehl, der eine neue Prozess-ID erhält. Dies ist ein weiterer Grund, warum das Suchensleep
einfacher ist als das Suchen nach Prozess-ID.Dieser Code stammt aus: Automatische Anpassung der Anzeigehelligkeit basierend auf Sonnenaufgang und Sonnenuntergang und Anpassung an diese Frage.
Verwenden Sie die PID anstelle des Namens, um eine verschachtelte Kette bis zum Startvorgang anzuzeigen:
Hinweis: Eine weitere Minute ist vergangen und der Befehl sleep erhält eine neue PID (8541).
quelle
807
odercron
greifen, und die gleiche Zeile würde nachgestimmt werden, ebenso wie mehr Kinder, wenn sie erzeugt werden. Aber es ging darum, die Eltern zu finden, nicht alle Kinder.1
. Ich glaube nicht, dass Sie PID 1 töten können.ps -efj
kann auch für die gleichen verwendet werden.Zum Beispiel,
quelle