Risposte:
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'
script:
#!/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 vengono visualizzati i PPID del processo corrente.
Per utilizzare l'alias, è necessario fornire un PID.
=
segno non è necessario, almeno su OS X 10.8.2.
Questa è una di quelle cose che imparo, dimentico, riapprendo, ripeto. Ma è utile La bandiera del comando pstree mostra un albero con una foglia in corrispondenza di N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
Il pid padre è nella variabile shell PPID, quindi
echo $PPID
$PPID
ha risolto il problema che Google ha suggerito a questa pagina come risposta.
Per stampare gli ID parent ( PPID
) di tutti i processi, utilizzare 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 lo hai):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
Per ottenere il PID principale del processo corrente, utilizzare echo $$
.
pstree
è il più bello che abbia mai visto qui.
ps j
è fantastico perché è disponibile su molte distro ed è facilmente componibile
Leggi / proc / $ PID / stato. Può essere facilmente scritto:
#! / Bin / sh P = $ 1 se [-z "$ P"]; poi leggi P fi cat / proc / "$ P" / status | grep PPid: | grep -o "[0-9] *"
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
é tutto quello di cui hai bisogno. (È molto raro che gli strumenti Unix facciano la if [ -z ]; then read
cosa.)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
.
grep /some/file
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
tmux
Un esempio un po 'più complesso che controlla il comando di un genitore che ha avviato il processo corrente Cambia comm = in cmd = per vedere il comando completo
Ecco una soluzione rapida che dovrebbe funzionare anche:
ps $$
Esegui top
con qualsiasi opzione tu voglia, come -u username and -p PID
.
E mentre top
è in funzione premere f, mostra un elenco di opzioni che si desidera visualizzare top
nell'output, ei parametri visualizzati verranno mostrati in lettere MAIUSCOLE e i parametri che verranno visualizzati o meno in lettere minuscole.
Quindi inserendo la lettera prima del parametro è possibile abilitarla o disabilitarla. Per l'ID del processo principale devi inserire be poi premere Enter, visualizzerà il PPID nell'output principale.
htop
te puoi configurare la PPID
colonna.
grep PPid status |cut -f2
come intime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; chiedo se c'è qualcosa di ancora più veloce?