Odpowiedzi:
Wiersz poleceń:
ps -o ppid= -p 1111
Funkcjonować:
ppid () { ps -p ${1:-$$} -o ppid=; }
Alias ( preferowana jest funkcja ):
alias ppid='ps -o ppid= -p'
Scenariusz:
#!/bin/sh
pid=$1
if [ -z $pid ]
then
read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=
Jeśli do funkcji lub skryptu nie zostanie podany PID, domyślnie wyświetlają PPID bieżącego procesu.
Aby użyć aliasu, należy podać PID.
=Znak nie jest konieczne, przynajmniej na OS X 10.8.2.
To jedna z tych rzeczy, których się uczę, zapominam, uczę się, powtarzam. Ale to jest przydatne. Flaga „p” polecenia pstree pokazuje drzewo z liściem w N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
Pid nadrzędny znajduje się w zmiennej PPID powłoki, więc
echo $PPID
$PPIDrozwiązało właśnie problem, na który Google zasugerowało tę stronę jako odpowiedź.
Aby wydrukować nadrzędny identyfikator ( PPID) wszystkich procesów, użyj tego polecenia:
ps j
Dla jednego procesu, po prostu przekazać PID, jak: ps j 1234.
Aby wyodrębnić tylko wartość, filtruj dane wyjściowe według awk:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
Aby wyświetlić listę PID wszystkich rodziców, użyj pstree(zainstaluj, jeśli go nie masz):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
Aby uzyskać nadrzędny identyfikator PID bieżącego procesu, użyj echo $$.
pstreejest najmilszy, jaki tu widziałem.
ps jjest świetny, ponieważ jest dostępny na wielu dystrybucjach i łatwo go skomponować
Odczyt / proc / $ PID / status. Może być łatwo skrypty:
#! / bin / sh
P = 1 USD
jeśli [-z "$ P"]; następnie
przeczytaj P.
fi
cat / proc / "$ P" / status | grep PPid: | grep -o „[0-9] *”
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'to wszystko czego potrzebujesz. (Jest to bardzo rzadkie w przypadku narzędzi uniksowych if [ -z ]; then read.)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ....
grep /some/file
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
Nieco bardziej złożony przykład, który sprawdza polecenie rodzica, który rozpoczął bieżący proces Zmień comm = na cmd =, aby zobaczyć pełne polecenie
Oto szybkie rozwiązanie, które powinno również działać:
ps $$
Uruchom topz dowolnymi opcjami, jak chcesz -u username and -p PID.
I podczas toppracy naciśnij f, pokazuje listę opcji, które chcesz wyświetlić w topdanych wyjściowych, a wyświetlane parametry będą wyświetlane dużymi literami, a parametry, które nie są wyświetlane, zostaną wyświetlone małymi literami.
Więc wpisując literę przed parametrem, możesz ją włączyć lub wyłączyć. W przypadku identyfikatora procesu nadrzędnego należy wprowadzić, ba następnie nacisnąć Enter, wyświetli on PPID w górnym pliku wyjściowym.
htopmożesz skonfigurować PPIDkolumnę.
grep PPid status |cut -f2jak wtime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done); zastanawiam się, czy jest coś jeszcze szybszego?