Respostas:
Usar ps -o ppid=
ps -o ppid= 2072retorna 2061, que você pode usar facilmente em um script, etc. ps -o ppid= -C foofornece o PPID do processo com comando foo. Você também pode usar o antiquado ps | grep: ps -eo ppid,comm | grep '[f]oo'.ps -f 2072retornos
UID PID PPID C TEMPO DE STAT TTY STAT CMD izx 2072 2061 0 07:16? S 0:00 / usr / lib / pulseaudio / pulse / gconf-helper
pstreerelação é pstree -s -p 2072:
Você está em: Home '' Diretório do Produto '' Artes e Artesanatos '' Artes Visuais
ppid= mas antes do pid, parece necessário. Eu obtive resultados diferentes se o omiti.
echo $PPID
se você precisar do comando deste pai pid:
cat /proc/$PPID/comm
se você precisar da linha de comando completa (com todas as opções):
cat /proc/$PPID/cmdline
$PPID é definido pelo shell, é o PID do processo pai/proc/, você tem alguns diretórios com o PID de cada processo. Então, se você cat /proc/$PPID/commecoar o nome do comando do PIDPPIDé definido como parte do padrão POSIX, portanto, qualquer shell compatível com POSIX deve defini-lo adequadamente. Veja pubs.opengroup.org/onlinepubs/9699919799/utilities/…
pstreepelo nome do comandoUtilizando pstreevocê pode procurar pelo nome do processo filho e obter o ID do Processo (PID) junto com os pais, avós e quaisquer filhos do processo filho:
$ pstree -hp | grep sleep
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(8414)
Nesse caso, sleepé o comando filho e é o PID 8414. Seu ID pai é 841 e é chamado display-auto-brightness. O avô é um shell ( sh) com um ID de processo de 839. O bisavô está croncom um ID de processo de 795. O tataravô também crontem um ID de processo 763.
Se você deseja pesquisar por ID do processo em sleepvez de nome, pode usar:
$ pstree -hp | grep 14653
|-cron(763)---cron(795)---sh(839)---display-auto-br(841)---sleep(14653)
Observe que o sleepID do processo foi alterado para 14653. O pai (PID 841) dorme por 1 minuto, acorda por uma fração de segundo e inicia um novo sleepcomando que obtém um novo ID de processo. Esse é outro motivo pelo qual pesquisar sleepé mais fácil do que pesquisar por ID do processo.
Este código foi retirado de: Ajustar automaticamente o brilho da tela com base no nascer e pôr do sol e adaptado a esta pergunta.
Para ver uma cadeia aninhada no processo de inicialização, use o PID em vez do nome:
$ pstree -aps 8541
systemd,1 splash fastboot kaslr
└─cron,763 -f
└─cron,795 -f
└─sh,839 -c /usr/local/bin/display-auto-brightness
└─display-auto-br,841 /usr/local/bin/display-auto-brightness
└─sleep,8541 60
Nota: Outro minuto se passou e o comando sleep recebe um novo PID (8541).
807ou crona mesma linha seria recuperada, assim como mais filhos se surgisse. Mas a questão era encontrar o pai, não todas as crianças.
1. Eu não acho que você pode matar o PID 1. #
ps -efj também pode ser usado para o mesmo.
Por exemplo,
> ps -efj | head
UID PID PPID PGID SID C STIME TTY TIME CMD
root 1 0 1 1 0 Jul01 ? 00:00:13 /sbin/init splash
root 2 0 0 0 0 Jul01 ? 00:00:00 [kthreadd]
root 3 2 0 0 0 Jul01 ? 00:00:02 [ksoftirqd/0]
root 5 2 0 0 0 Jul01 ? 00:00:00 [kworker/0:0H]
root 7 2 0 0 0 Jul01 ? 00:06:44 [rcu_sched]
root 8 2 0 0 0 Jul01 ? 00:00:00 [rcu_bh]
root 9 2 0 0 0 Jul01 ? 00:00:00 [migration/0]
root 10 2 0 0 0 Jul01 ? 00:00:08 [watchdog/0]
root 11 2 0 0 0 Jul01 ? 00:00:08 [watchdog/1]
ps -o args ...dos resultados, mas isso tem um pouco de cheiro.