Como obter o PID pai de um determinado processo no GNU / Linux a partir da linha de comando?

79

Resolved before asked: cat /proc/1111/status | grep PPid

    
por Vi. 08.06.2010 / 11:42

9 respostas

92

Linha de comando:

ps -o ppid= -p 1111

Função:

ppid () { ps -p ${1:-$$} -o ppid=; }

Alias (uma função é preferível ):

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 nenhum PID for fornecido para a função ou o script, o padrão é mostrar o PPID do processo atual.

Para usar o alias, um PID deve ser fornecido.

    
por 08.06.2010 / 13:21
11

Essa é uma daquelas coisas que eu aprendo, esqueço, reaprende, repito. Mas é útil. A bandeira "s" do comando pstree mostra uma árvore com uma folha em N:

pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
    
por 31.01.2013 / 21:32
11

Parent pid está na variável shell PPID, então

echo $PPID
    
por 24.09.2012 / 13:55
6

Este comando:

ps j

imprimirá os ids pai ( PPID ) de todos os processos.

Para o processo único, basta passar o PID, como: ps j 1234 .

Para extrair apenas o valor, filtre a saída por awk , como:

ps j 1234 | awk 'NR>1 {print $3}' # BSD ps
ps j 1234 | awk 'NR>1 {print $1}' # GNU ps

Para listar os PIDs de todos os pais, use pstree , como:

$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)

Para obter o PID pai do processo atual, use echo $$ .

    
por 19.02.2016 / 22:31
5

Leia / proc / $ PID / status. Pode ser facilmente roteirizado:

#!/bin/sh
P=$1
if [ -z "$P" ]; then
    read P
fi
cat /proc/"$P"/status | grep PPid: | grep -o "[0-9]*"
    
por 08.06.2010 / 11:44
3

No Linux:

ps hoppid $thatprocess
    
por 21.10.2014 / 19:30
2
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
    tmux

Um exemplo um pouco mais complexo que verifica o comando de um pai que iniciou o processo atual Mudar comm = para cmd = para ver o comando completo

    
por 19.10.2014 / 22:08
1

Aqui está uma solução rápida que também deve funcionar:

ps $$
    
por 12.09.2013 / 08:18
1

Execute top com as opções desejadas, como -u username and -p PID .

E enquanto top está funcionando pressione f , ele mostra uma lista de opções que você deseja exibir em top output, e os parâmetros exibidos serão mostrados em letras maiúsculas e os parâmetros que ou não exibir será mostrado em letras pequenas.

Então, digitando a letra antes do parâmetro, você pode ativá-lo ou desativá-lo. Para o ID pai do processo, você deve entrar b e pressionar Enter , ele exibirá o PPID na saída superior.

    
por 23.11.2012 / 13:21