Antworten:
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.
=
Vorzeichen ist zumindest unter OS X 10.8.2 nicht erforderlich.
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
Die übergeordnete PID befindet sich in der Shell-Variablen PPID
echo $PPID
$PPID
nur das Problem gelöst, auf das Google diese Seite als Antwort vorgeschlagen hat.
PPID
Verwenden Sie diesen Befehl, um übergeordnete IDs ( ) aller Prozesse zu drucken :
ps j
Für den einzelnen Prozess, geben Sie einfach die PID, wie: ps j 1234
.
Um nur den Wert zu extrahieren, filtern Sie die Ausgabe nach awk
:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
Um die PIDs aller Eltern aufzulisten, verwenden Sie pstree
(installieren Sie sie, wenn Sie sie nicht haben):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
Verwenden Sie, um die übergeordnete PID des aktuellen Prozesses abzurufen echo $$
.
pstree
ist die schönste, die ich hier gesehen habe.
ps j
ist großartig, weil es in vielen Distributionen erhältlich ist und sich leicht komponieren lässt
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] *
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
ist alles, was du brauchst. (Es ist sehr ungewöhnlich für Unix-Tools, um das if [ -z ]; then read
Ding zu tun .)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
.
grep /some/file
$ 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
Hier ist eine schnelle Lösung, die auch funktionieren sollte:
ps $$
Führen Sie top
mit beliebigen Optionen aus -u username and -p PID
.
Während der top
Arbeitspresse fwird eine Liste der Optionen angezeigt, die in der top
Ausgabe angezeigt werden sollen. Die angezeigten Parameter werden in GROSSBUCHSTABEN und die Parameter, die angezeigt werden oder nicht, werden 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 eine ID eingeben bund dann drücken Enter. Die PPID wird in der höchsten Ausgabe angezeigt.
htop
Sie in PPID
Spalte konfigurieren können .
grep PPid status |cut -f2
wie intime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; frage mich, ob es etwas noch schneller gibt?