Qual é o comando do terminal para descobrir a identificação de um processo


12

Quero sair de um processo usando a linha de comando, mas não consigo recuperar o comando para procurar o ID do processo. Alguém sabe disso?

Respostas:


13

O comando para descobrir a identificação de um processo (dado seu nome) é pidof. No entanto, como sua intenção é interromper o processo, existem maneiras melhores / mais fáceis do que usar pidofpara encontrar seu pid primeiro:

Supondo que o processo que você deseja matar seja identificado exclusivamente por seu nome (ou você deseja matar todos os processos com esse nome), você não precisa conhecer o seu pid. Você pode simplesmente fazer killall processname.

Se houver vários processos com o mesmo nome, mas você quiser matar apenas um deles, o uso pidofnão ajudará muito, pois fornecerá os pids, mas não fornecerá nenhuma informação para determinar qual dos pids pertence ao processo que você realmente deseja matar.

Nesse caso, você pode fazer o ps aux | grep processnameque mostrará todos os processos com o nome determinado, bem como o console em que estão sendo executados (se aplicável) e os argumentos com os quais foram chamados, o que, esperançosamente, permite identificar o processo que você está procurando .

Se o processo abriu qualquer X-windows, você também pode usar xkillpara matar (invoque xkille clique na janela).


7

Você deve dar uma olhada pgrepe pkill, dois utilitários muito úteis e poderosos encontrados na maioria dos sistemas Linux e UNIX.

$ apropos pgrep
pgrep (1) - look up or signal processes based on name and other attributes

5

Você pode executar ps -Ano terminal para mostrar todos os processos (com seu ID de processo) atualmente em execução.


Canalize para grepprocurar o nome de um processo específico:ps -A | grep 'my name'
Gabriel Staples

2

Eu também tive um problema semelhante. Eu usei pstree -p; isso me mostrou os processos em execução atuais, incluindo IDs de processo.


comando interessante
jumpnett


1

O meu favorito é pstree -p | grep $(program_name). Na verdade, isso acolhe o processo, destaca e mostra o pid entre parênteses.

Meu próximo favorito (especialmente quando estiver programando e precisando de todos os pids do processo) é pgrep -law "". Isso literalmente fornece a você todos os pid execução seguidos pelo aplicativo (com caminho absoluto).

Isso pode ser reduzido pgrep -lw ""para pid seguido pelo nome do programa ou mesmo apenas pgrep -lpara todos os pid

Obviamente, você pode procurar um nome de programa específico (ou parte do programa). (ou seja pgrep -lw firef, provavelmente exibirá algo como "4567 firefox").


Não pstree -psH $(pgrep prgram_name)seria melhor para o primeiro caso?
muru 18/09/14

Sim, isso também funciona. Você poderia criar um apelido para isso. Eu estava apenas usando o $ () para representar o nome de um programa; Acho que digitar $ (pgrep name) é um pouco chato por causa do cifrão, mas acho que um pseudônimo disso pode ser útil.
dylnmc

0

Esta resposta, do @Ben em uma pergunta duplicada , resolveu meu problema:

Considere usar o topcomando no terminal.

   The  top  program  provides  a dynamic real-time view of a running
   system.  It can display system summary information as  well  as  a
   list  of processes or threads currently being managed by the Linux
   kernel.  The types of system summary  information  shown  and  the
   types,  order  and size of information displayed for processes are
   all user configurable and that configuration can be  made  persis‐
   tent across restarts.

via man top

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.