Riga di comando:
ps -o ppid= -p 1111
Funzione:
ppid () { ps -p ${1:-$$} -o ppid=; }
Alias (è preferibile una funzione):
alias ppid='ps -o ppid= -p'
Sceneggiatura:
#!/bin/sh
pid=$1
if [ -z $pid ]
then
read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=
Se non viene fornito alcun PID alla funzione o allo script, per impostazione predefinita mostrano il PPID del processo corrente.
Per utilizzare l'alias, è necessario fornire un PID.
Per stampare gli ID genitore (PPID
) di tutti i processi, usa questo comando:
ps j
Per il singolo processo, basta passare il PID, come:ps j 1234
.
Per estrarre solo il valore, filtra l'output per awk
, come:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
Per elencare i PID di tutti i genitori, usa pstree
(installalo se non ce l'hai):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
Per ottenere il PID genitore del processo corrente, usa echo $$
.
Questa è una di quelle cose che imparo, dimentico, reimparo, ripeto. Ma è utile. Il flag "s" del comando pstree mostra un albero con una foglia in N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks