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
$PPID
rozwią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 $$
.
pstree
jest najmilszy, jaki tu widziałem.
ps j
jest ś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 top
z dowolnymi opcjami, jak chcesz -u username and -p PID
.
I podczas top
pracy naciśnij f, pokazuje listę opcji, które chcesz wyświetlić w top
danych 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.
htop
możesz skonfigurować PPID
kolumnę.
grep PPid status |cut -f2
jak wtime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; zastanawiam się, czy jest coś jeszcze szybszego?