it-swarm.com.de

Wie erhalte ich die übergeordnete PID eines bestimmten Prozesses in GNU/Linux über die Befehlszeile?

Gelöst, bevor gefragt: cat /proc/1111/status | grep PPid

81
Vi.

Befehlszeile:

ps -o ppid= -p 1111

Funktion:

ppid () { ps -p ${1:-$$} -o ppid=; }

Alias ​​(eine Funktion ist vorzuziehen ):

alias ppid='ps -o ppid= -p'

Skript:

#!/bin/sh
pid=$1
if [ -z $pid ]
then
    read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=

Wenn der Funktion oder dem Skript keine PID übergeben wird, wird standardmäßig die PPID des aktuellen Prozesses angezeigt.

Um den Alias ​​zu verwenden, muss eine PID angegeben werden.

95

Die übergeordnete PID befindet sich in der Shell-Variablen PPID

echo $PPID
12
Ivan Novotny

Dies ist eines der Dinge, die ich lerne, vergesse, neu lerne, wiederhole. Aber es ist nützlich. Die Flagge des pstree-Befehls zeigt einen Baum mit einem Blatt bei N:

pstree -sA $(pgrep badblocks)
systemd---Sudo---mkfs.ext4---badblocks
12
user194394

Dieser Befehl:

ps j

gibt die übergeordneten IDs (PPID) aller Prozesse aus.

Übergeben Sie für den einzelnen Prozess einfach die PID wie folgt: ps j 1234.

Um nur den Wert zu extrahieren, filtern Sie die Ausgabe nach awk wie folgt:

ps j 1234 | awk 'NR>1 {print $3}' # BSD ps
ps j 1234 | awk 'NR>1 {print $1}' # GNU ps

Um die PIDs aller Eltern aufzulisten, verwenden Sie pstree wie:

$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)

Verwenden Sie echo $$, um die übergeordnete PID des aktuellen Prozesses abzurufen.

9
kenorb

Lesen Sie/proc/$ PID/status. Kann leicht gescriptet werden:

 #!/bin/sh 
 P = $ 1 
 if [-z "$ P"]; dann 
 lies P 
 fi 
 cat/proc/"$ P"/status | grep PPid: | grep -o "[0-9] *" 
5
Vi.

Unter Linux:

ps hoppid $thatprocess
4
jthill
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
    tmux

Ein etwas komplexeres Beispiel, das den Befehl eines übergeordneten Elements überprüft, das den aktuellen Prozess gestartet hat. Ändern Sie comm = in cmd =, um den vollständigen Befehl anzuzeigen

2
sebastian_t

Hier ist eine schnelle Lösung, die auch funktionieren sollte:

ps $$
1
Gevork Palyan

Führen Sie top mit den gewünschten Optionen aus, z. B. -u username and -p PID.

Und während top arbeitet, drücken Sie fZeigt eine Liste der Optionen an, die in der Ausgabe von top angezeigt werden sollen, und die angezeigten Parameter werden in GROSSBUCHSTABEN und die Parameter, die angezeigt werden oder nicht, in Kleinbuchstaben angezeigt.

Durch Eingabe des Buchstabens vor dem Parameter können Sie ihn aktivieren oder deaktivieren. Für die übergeordnete Prozess-ID müssen Sie Folgendes eingeben b und dann drücken Enterwird die PPID in der höchsten Ausgabe angezeigt.

1
Praveen S.