Como usar o comando ps para monitorar processos do Linux

Uma janela de terminal em um laptop Linux.
Fatmawati Achmad Zaenuri / Shutterstock

Obtenha um instantâneo dos processos em execução no seu computador Linux com o ps comando . Localize processos por nome, usuário ou mesmo terminal com tantos ou poucos detalhes quanto você precisar. Nós mostramos como.

Gerenciamento de processos no Linux

O coração de todos os sistemas operacionais Linux e semelhantes ao Unix é o kernel. Entre suas muitas responsabilidades está a alocação de recursos do sistema, como RAM e tempo de CPU. Eles devem ser manipulados em tempo real para que todos os processos em execução tenham seu quinhão, de acordo com a prioridade de cada tarefa.

Às vezes, as tarefas podem travar, entrar em um loop apertado ou não responder por outros motivos. Ou eles podem continuar em execução, mas engolem muito tempo de CPU ou RAM, ou se comportam de uma forma igualmente anti-social. Às vezes, as tarefas precisam ser eliminadas como uma misericórdia para todos os envolvidos. O primeiro passo. Claro, é identificar o processo em questão.

Mas talvez você não tenha nenhum problema de tarefa ou desempenho. Talvez você esteja apenas curioso sobre quais processos estão sendo executados dentro de seu computador e gostaria de dar uma olhada por baixo do capô. O pscomando satisfaz essas duas necessidades. Dá a você um instantâneo do que está acontecendo dentro do seu computador “agora”.

psé flexível o suficiente para fornecer as informações de que você precisa, exatamente no formato que você deseja. Na verdade, pstem muitas opções. As opções descritas aqui atenderão às necessidades mais comuns. Se você precisar se aprofundar mais psdo que abordamos neste artigo, verá que nossa introdução torna a página do manual mais fácil de digerir.

Processos de Listagem

A maneira mais fácil de usar psé ativá-lo sem parâmetros:

ps

ps em uma janela de terminal

ps exibe uma lista dos processos iniciados pelo usuário que executou o comando.

saída do ps em uma janela de terminal

As quatro colunas são:

  • PID : O número de identificação do processo do processo.
  • TTY : o nome do console em que o usuário está conectado.
  • TEMPO : A quantidade de tempo de processamento da CPU que o processo usou.
  • CMD : O nome do comando que iniciou o processo

Processo de listagem para todos os usuários

adicionando -e(selecionar todos os processos) podemos fazer uma pslista dos processos que foram iniciados por todos os usuários, não apenas o usuário que está executando o pscomando. Como essa será uma longa lista, estamos adicionando less.

ps -e | Menos

ps -e |  menos em uma janela de terminal

A lista de processos é canalizada para less.

A saída de ps -e canalizada para less em uma janela de terminal

Temos muito mais entradas na lista, mas vemos as mesmas quatro colunas de antes. As entradas com um ponto de interrogação ?na TTYcoluna não foram iniciadas em uma janela de terminal.

Recomendado:  Como pesquisar uma palavra em uma página da web

Mostrando a hierarquia do processo

Às vezes, pode ajudar a descobrir um problema ou identificar um processo específico se você puder ver quais processos iniciaram outros processos. Usamos a -Hopção (hierarquia) para fazer isso.

ps -eH | Menos

ps -eH |  menos em uma janela de terminal

A indentação indica quais processos são pais de quais outros processos.

saída de ps -eH em menos em uma janela de terminal

Para adicionar um pouco mais de clareza, podemos pedir pspara adicionar algumas linhas ASCII e desenhar a hierarquia como uma árvore. A opção de fazer isso é a --forestopção.

ps -eH --forest | Menos

ps -eH --forest |  menos em uma janela de terminal

Isso torna mais fácil rastrear quais processos são os pais de outros processos.

saída de ps -eH --forest canalizada para menos em uma janela de terminal

Listagem de processos por nome

Você pode canalizar a saída do psmeio greppara a lista de entradas que têm nomes que correspondem ao termo de pesquisa . Aqui, estamos procurando entradas que correspondam ao termo de pesquisa “firefox”:

ps -e | grep firefox

ps -e |  grep firefox em uma janela de terminal

Nesse caso, a saída é uma única entrada para o processo no qual estamos interessados. Claro, se tivéssemos lançado várias instâncias do Firefox, haveria mais de um item retornado na lista.

saída de ps -e |  grep firefox em uma janela de terminal

Mostrando mais colunas na saída

Para adicionar mais colunas à saída, use a opção -f(formato completo).

ps -ef | Menos

ps -ef |  menos em uma janela de terminal

Um conjunto extra de colunas está incluído na saída de ps.

saída de ps -ef |  menos em uma janela de terminal

As colunas são:

  • UID : O ID de usuário do proprietário deste processo.
  • PID : O ID do processo do processo.
  • PPID : ID do processo pai do processo.
  • C : O número de filhos que o processo possui.
  • STIME : hora de início. A hora em que o processo começou.
  • TTY : o nome do console em que o usuário está conectado.
  • TEMPO : A quantidade de tempo de processamento da CPU que o processo usou.
  • CMD : o nome do comando que iniciou o processo.

Usando a opção -F(formato completo extra), podemos obter ainda mais colunas:

ps -eF | Menos

ps -eF |  menos em uma janela de terminal

As colunas que obtemos desta vez requerem que a tela seja rolada lateralmente para revelar todas elas.

saída de ps -eF |  menos em uma janela de terminal, lado esquerdo da tela

Pressionar a tecla “Seta para a direita” muda o display para a esquerda.

saída de ps -eF |  menos em uma janela de terminal, lado direito da tela

As colunas que obtemos são:

  • UID : O ID de usuário do proprietário deste processo.
  • PID : O ID do processo do processo.
  • PPID : ID do processo pai do processo.
  • C : O número de filhos que o processo possui.
  • SZ : Tamanho em páginas RAM da imagem do processo.
  • RSS : tamanho do conjunto residente. Esta é a memória física não trocada usada pelo processo.
  • PSR : o processador ao qual o processo está atribuído.
  • STIME : hora de início. A hora em que o processo começou.
  • TTY : o nome do console em que o usuário está conectado.
  • TEMPO : A quantidade de tempo de processamento da CPU que o processo usou.
  • CMD : o nome do comando que iniciou o processo.
Recomendado:  Os melhores smartphones robustos para trabalhos difíceis e estilos de vida ativos

Listagem de processos por ID de processo

Depois de encontrar o ID do processo para o processo no qual está interessado, você pode usá-lo com o pscomando para listar os detalhes desse processo. Use a opção -p(selecione por ID de processo) para conseguir isso:

ps -p 3403

ps -p 3403 em uma janela de terminal

Os detalhes deste processo estão listados:

Saída de ps -p 3403 em uma janela de terminal

Você não está restrito a um ID de processo. Você pode fornecer uma lista de IDs de processo, separados por espaços.

Listagem de processos por comando

A -Copção (comando) permite que você pesquise um processo usando o nome do comando. Ou seja, o nome do comando que iniciou o processo. Isso é sutilmente diferente da linha de comando, que pode incluir nomes de caminho e parâmetros ou opções.

ps -C obturador

obturador ps -C em uma janela de terminal

Os detalhes do processo de obturação são listados.

Processos de listagem pertencentes a um usuário

Para ver os processos que pertencem a um determinado usuário, use a opção -u(lista de usuários):

ps-u mary

ps -u mary em uma janela de terminal

Os processos pertencentes à conta do usuário mary são exibidos.

Saída de ps -u mary em uma janela de terminal

Listagem de processos por terminal

Para ver os processos associados a um TTY, use a opção -t(selecione por TTY). Usado sem um número TTY, a -topção relata os processos associados à janela do terminal atual.

tty
PST

ps -t em uma janela de terminal

O ttycomando relata que se trata do pseudo-teletipo 0. Os processos listados por ps -testão todos associados ao TTY pts/0.

Se passarmos um número TTY na linha de comando, devemos obter um relatório dos processos associados a esse TTY.

ps -t 1

ps -t 1 em uma janela de terminal

Desta vez, os processos estão todos associados ao TTY pts/1.

Seleção de colunas para exibir

Com a -oopção (formato), você pode selecionar quais colunas deseja incluir na saída ps. Você especifica as colunas por nome. A (longa) lista de nomes de coluna pode ser vista na página do manual na seção intitulada “Especificadores de formato padrão”. Neste exemplo, estamos optando por ter o tempo de CPU ( pcpu) e a linha de comando com argumentos ( args) incluídos na saída.

ps -e -o pcpu, args | Menos

ps -e -o pcpu, args |  menos em uma janela de terminal

A saída inclui apenas nossas duas colunas solicitadas.

saída de ps -e -o pcpu, args |  menos em uma janela de terminal

Classificando a saída por colunas

Você pode ter a saída classificada para você usando a --sortopção. Vamos classificar a saída pela coluna CPU:

ps -e -o pcpu, args --sort -pcpu | Menos

ps -e -o pcpu, args --sort -pcpu |  menos em uma janela de terminal

O hífen “ -” no  pcpu parâmetro de classificação fornece uma ordem de classificação decrescente.

Saída de ps classificado por cpu em uma janela de terminal

Para ver os dez processos mais intensivos da CPU, canalize a saída por meio do  head comando :

ps -e -o pcpu, args --sort -pcpu | cabeça -10

ps -e -o pcpu, args --sort -pcpu |  cabeça 10 em uma janela de terminal

Obtemos uma lista ordenada e truncada.

saída de ps -e -o pcpu, args --sort -pcpu |  cabeça 10 em uma janela de terminal

Se adicionarmos mais colunas à nossa exibição, podemos classificar por mais colunas. Vamos adicionar a pmemcoluna. Essa é a porcentagem da memória do computador que está sendo usada pelo processo. Sem um hífen ou com um sinal de mais ” +“, a ordem de classificação é crescente.

ps -e -o pcpu, pmem, args --sort -pcpu, pmem | cabeça -10

ps -e -o pcpu, pmem, args --sort -pcpu, pmem |  cabeça 10 em uma janela de terminal

Recebemos nossa coluna extra e a nova coluna é incluída na classificação. A primeira coluna é classificada antes da segunda coluna e a segunda coluna é classificada em ordem crescente porque não colocamos um hífen pmem.

Saída de ps -e -o pcpu, pmem, args --sort -pcpu, pmem |  cabeça 10 em uma janela de terminal

Vamos torná-lo um pouco mais útil e adicionar a coluna ID do processo ( pid) para que possamos ver o número do processo de cada processo em nossa listagem.

ps -e -o pid, pcpu, pmem, args --sort -pcpu, pmem | cabeça -10

ps -e -o pid, pcpu, pmem, args --sort -pcpu, pmem |  cabeça 10 em uma janela de terminal

Agora podemos identificar os processos.

Recomendado:  O que fazer (e não fazer) se você encontrar um smartphone perdido

Saída de ps -e -o pid, pcpu, pmem, args --sort -pcpu, pmem |  cabeça 10

Processos de eliminação por ID de processo

Cobrimos uma variedade de maneiras de identificar processos, incluindo nome, comando, usuário e terminal. Também cobrimos maneiras de identificar processos por seus atributos dinâmicos, como uso de CPU e memória.

Assim, de uma forma ou de outra, podemos identificar os processos que estão em execução. Conhecendo seu ID de processo, podemos (se necessário) matar qualquer um desses processos usando o killcomando. Se quiséssemos matar o processo 898, usaríamos este formato:

sudo kill 898

sudo kill 898 em uma janela de terminal

Se tudo correr bem, o processo é encerrado silenciosamente.

saída de sudo kill 898 em uma janela de terminal

Processos de morte por nome

O pkillcomando permite eliminar processos por nome . Certifique-se de identificar o processo correto! Este comando encerrará o processo superior.

sudo pkill top

sudo pkill top em uma janela de terminal

Novamente, nenhuma notícia é uma boa notícia. O processo é encerrado silenciosamente.

saída de sudo pkill top em uma janela de terminal

Matando vários processos por nome

Se você tiver várias cópias de um processo em execução ou se um processo gerou vários processos filho (como o Google Chrome pode fazer), como você pode eliminá-los? Isso é tão fácil. Usamos o killallcomando.

Temos duas cópias do top running:

ps -e | grep top

ps -e |  grep top em uma janela de terminal

Podemos encerrar ambos com este comando :

sudo killall top

sudo killall top em uma janela de terminal

Nenhuma resposta significa nenhum problema, portanto, ambos os processos foram encerrados.

saída do sudo killall top em uma janela termonal

Obtenha uma visão dinâmica com os melhores

A saída psé uma visualização instantânea. Não é atualizado. Para obter uma visão atualizada dos processos, use o topcomando. Ele fornece uma visão dinâmica dos processos em execução em seu computador . O display é dividido em duas partes. Há uma área de painel na parte superior da tela composta por linhas de texto e uma tabela na parte inferior da tela composta por colunas.

Comece topcom este comando:

topo

o comando principal em execução em uma janela de terminal

As colunas contêm informações sobre os processos:

  • PID : ID do processo
  • USUÁRIO : Nome do dono do processo
  • PR : prioridade do processo
  • NI : O bom valor do processo
  • VIRT : Memória virtual utilizada pelo processo
  • RES : Memória residente usada pelo processo
  • SHR : memória compartilhada usada pelo processo
  • S : Status do processo. Veja a lista abaixo dos valores que este campo pode assumir
  • % CPU : a parcela do tempo de CPU usado pelo processo desde a última atualização
  • % MEM : compartilhamento de memória física usada
  • TIME + : tempo total de CPU usado pela tarefa em centésimos de segundo
  • COMANDO : nome do comando ou linha de comando (parâmetros de nome e linha de comando) Se a coluna de comando não puder ser vista, pressione a tecla “Seta para a direita”.

O status do processo pode ser um dos seguintes:

  • D : Sono ininterrupto
  • R : Correndo
  • S : Dormindo
  • T : rastreado (parado)
  • Z : Zumbi

Pressione a tecla “Q” para sair top.

Antes de matar um processo

Certifique-se de que é o que você está procurando e verifique se não vai causar problemas. Em particular, vale a pena verificar com -H(hierarquia) e --forestopções para ter certeza de que não há nenhum processo filho importante que você tenha esquecido.