Příkazový řádek:
ps -o ppid= -p 1111
Funkce:
ppid () { ps -p ${1:-$$} -o ppid=; }
Alias (vhodná je funkce):
alias ppid='ps -o ppid= -p'
Scénář:
#!/bin/sh
pid=$1
if [ -z $pid ]
then
read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=
Pokud funkci nebo skriptu není dodáno žádné PID, ve výchozím nastavení zobrazí PPID aktuálního procesu.
Chcete-li použít alias, musíte zadat PID.
Chcete-li vytisknout ID rodičů (PPID
) ze všech procesů použijte tento příkaz:
ps j
Pro jeden proces stačí předat PID, například:ps j 1234
.
Chcete-li extrahovat pouze hodnotu, filtrujte výstup podle awk
, jako:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
Chcete-li vypsat PID všech rodičů, použijte pstree
(nainstalujte jej, pokud jej nemáte):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
Chcete-li získat rodičovské PID aktuálního procesu, použijte echo $$
.
To je jedna z věcí, které se učím, zapomínám, znovu se učím, opakuji. Ale je to užitečné. Příznak ‚s‘ příkazu pstree ukazuje strom s listem na N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks