Respostas:
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'
Roteiro:
#!/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, eles serão padrão para mostrar o PPID do processo atual.
Para usar o alias, um PID deve ser fornecido.
=
sinal não é necessário, pelo menos no OS X 10.8.2.
Essa é uma daquelas coisas que eu aprendo, esqueço, reaprendo, repito. Mas é útil. A bandeira do comando pstree mostra uma árvore com uma folha em N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
O pid pai está na variável PPID do shell, então
echo $PPID
$PPID
acabou de resolver o problema para o qual o Google sugeriu esta página como resposta.
Para imprimir os IDs pai ( PPID
) de todos os processos, use este comando:
ps j
Para o único processo, basta passar o PID, como: ps j 1234
.
Para extrair apenas o valor, filtre a saída por awk
, como:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
Para listar PIDs de todos os pais, use pstree
(instale-o se não o tiver):
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
Para obter o PID pai do processo atual, use echo $$
.
pstree
é o mais legal que eu já vi aqui.
ps j
é ótimo porque está disponível em muitas distros e é facilmente comporável
Leia / proc / $ PID / status. Pode ser facilmente script:
#! / bin / sh P = $ 1 se [-z "$ P"]; então leia P fi cat / proc / "$ P" / status | grep PPid: | grep -o "[0-9] *"
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
é tudo o que você precisa. (É muito raro para obter ferramentas Unix para fazer a if [ -z ]; then read
coisa.)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
.
grep /some/file
$ 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 Altere comm = para cmd = para ver o comando completo
Aqui está uma solução rápida que também deve funcionar:
ps $$
Corra top
com as opções que desejar, como -u username and -p PID
.
Enquanto top
pressiona f, ele mostra uma lista de opções que você deseja exibir na top
saída, e os parâmetros exibidos serão mostrados em letras maiúsculas e os parâmetros que serão exibidos ou não serão mostrados em letras minúsculas.
Portanto, digitando a letra antes do parâmetro, você pode habilitá-lo ou desabilitá-lo. Para o ID do processo pai, você deve digitar be pressionar Enter, ele exibirá o PPID na saída superior.
htop
você pode configurar a PPID
coluna.
grep PPid status |cut -f2
como emtime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; pergunto se há algo ainda mais rápido?