Como obter pid dos pais de um dado pid de crianças?
Eu sei que posso verificar manualmente em / proc, estou me perguntando se existe uma maneira melhor / inteligente de conseguir isso no Ubuntu. Observe que os pais podem ou não ser mortos.
obrigado
command-line
bash
process
cache
fonte
fonte
ps -o args ...
dos resultados, mas isso tem um pouco de cheiro.ppid=
mas antes do pid, parece necessário. Eu obtive resultados diferentes se o omiti.Usando apenas variável shell para obter o PID pai:
se você precisar do comando deste pai pid:
se você precisar da linha de comando completa (com todas as opções):
Explicação
$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/comm
ecoar o nome do comando do PIDCheck man proc
fonte
PPID
é 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/…Usando
pstree
pelo nome do comandoUtilizando
pstree
você 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:Nesse caso,
sleep
é o comando filho e é o PID8414
. Seu ID pai é 841 e é chamadodisplay-auto-brightness
. O avô é um shell (sh
) com um ID de processo de839
. O bisavô estácron
com um ID de processo de795
. O tataravô tambémcron
tem um ID de processo763
.Se você deseja pesquisar por ID do processo em
sleep
vez de nome, pode usar:Observe que o
sleep
ID do processo foi alterado para14653
. O pai (PID 841) dorme por 1 minuto, acorda por uma fração de segundo e inicia um novosleep
comando que obtém um novo ID de processo. Esse é outro motivo pelo qual pesquisarsleep
é 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:
Nota: Outro minuto se passou e o comando sleep recebe um novo PID (8541).
fonte
807
oucron
a 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,
fonte