Como usar o comando ps para monitorar processos Linux

Conteúdo

Uma janela de terminal em um laptop Linux.

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 quantos ou poucos detalhes você precisa. Nós mostramos como.

Gestão de processos em 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 precisam ser combinados em tempo real para que todos os processos em execução recebam seu quinhão, de acordo com a prioridade de cada tarefa.

As vezes, tarefas podem travar, entrando em um circuito fechado ou parando de responder por outros motivos. Ou eles podem continuar a correr, mas eles consomem muito tempo de CPU ou RAM, ou se comportar de maneira igualmente anti-social. As vezes, tarefas devem ser removidas como uma misericórdia para todos os envolvidos. O primeiro passo. Decididamente, é identificar o procedimento em questão.

Mas talvez você não tenha nenhum problema de lição de casa ou desempenho. Talvez você esteja apenas curioso para saber quais processos estão sendo executados dentro do seu computador e gostaria de dar uma olhada nos bastidores. a ps O comando satisfaz ambas as necessidades. Dá para você um instantâneo do que está acontecendo dentro do seu computador “agora.”

ps é flexível o suficiente para fornecer exatamente as informações de que você precisa, exatamente no formato que você gostaria. Na realidade, ps você tem muitas opções. As alternativas descritas aqui irão cobrir as necessidades mais comuns. Se você quiser se aprofundar ps do que pegamos neste post, você 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 é ligá-lo sem parâmetros:

ps

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

As quatro colunas são:

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

Procedimento de listagem para todos os usuários

adicionando o -e (selecione todos os processos) podemos fazer ps liste os processos que foram iniciados por todos os usuários, não apenas o usuário que está executando o ps comando. Porque esta será uma longa lista, estamos integrando em less.

ps -e | menos

A lista de processos é canalizada para less.

Temos muito mais entradas na lista, mas vemos as mesmas quatro colunas de antes. Entradas com um ponto de interrogação ? no TTY A coluna não começou em uma janela de terminal.

Mostrar hierarquia de processos

As vezes, você pode ajudar a consertar um obstáculo ou identificar um procedimento específico se puder ver quais processos iniciaram outros processos. Nós usamos o -H (hierarquia) opção de fazer isso.

ps -eH | menos

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

Para adicionar um pouco mais de clareza, Nós podemos pergutar ps adicionar algo ASCII linhas e desenhar a hierarquia como uma árvore. A opção de fazer isso é o --forest opção.

ps -eH --forest | menos

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

Lista de processos por nome

Você pode canalizar a saída de ps através de grep para listar entradas que têm nomes que correspondem ao termo de pesquisa. Aqui buscamos entradas que combinem com o termo de pesquisa “Raposa de fogo”:

ps -e | grep firefox

Para este caso, a saída é uma única entrada para o procedimento que nos interessa. Decididamente, se tivéssemos lançado várias instâncias do Firefox, haveria mais de um item retornado na lista.

Mostra mais colunas na saída

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

ps -ef | menos

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

As colunas são:

  • UID: ID de usuário do proprietário deste procedimento.
  • PID: O ID do procedimento do procedimento.
  • PPID: ID do procedimento principal do procedimento.
  • C: O número de filhos que o procedimento tem.
  • CLIMA: Hora de início. No momento em que o procedimento começou.
  • TTY: O nome do console em que o usuário está conectado.
  • CLIMA: A quantidade de tempo de processamento da CPU usado pelo procedimento.
  • CMD: O nome do comando que iniciou o procedimento.

Usando o -F (formato extra completo) podemos obter ainda mais colunas:

ps -eF | menos

As colunas que obtemos desta vez exigem que a tela role para os lados para revelá-los todos.

Pressionando a tecla “Seta direita”, a tela rola para a esquerda.

As colunas que temos agora são:

  • UID: ID de usuário do proprietário deste procedimento.
  • PID: O ID do procedimento do procedimento.
  • PPID: ID do procedimento principal do procedimento.
  • C: O número de filhos que o procedimento tem.
  • SZ: Tamanho da imagem do procedimento em páginas de RAM.
  • RSS: Tamanho do conjunto residente. Esta é a memória física inalterada usada pelo procedimento.
  • PSR: O processador ao qual o procedimento é atribuído.
  • CLIMA: Hora de início. No momento em que o procedimento começou.
  • TTY: O nome do console em que o usuário está conectado.
  • CLIMA: A quantidade de tempo de processamento da CPU usado pelo procedimento.
  • CMD: O nome do comando que iniciou o procedimento.

Lista de processos por ID de procedimento

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

ps -p 3403

Os detalhes deste procedimento estão listados:

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

Lista de processos por comando

a -C Opção (comando) permite-lhe procurar um procedimento usando o nome do comando. Em outras palavras, o nome do comando que iniciou o procedimento. Isso é sutilmente diferente da linha de comando, que pode incluir nomes de caminho e parâmetros ou opções.

ps -C obturador

Os detalhes do procedimento do obturador estão listados.

Lista de processos pertencentes a um usuário

Para visualizar os processos que pertencem a um determinado usuário, usar el -u (Lista de usuários) opção:

ps-u mary

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

Lista de processos por terminal

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

tty
PST

a tty comando relata que este é um pseudo-ticker 0. Os processos listados por ps -t estão todos associados a TTY pts/0.

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

PST 1

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

RELACIONADO: O que é um TTY no Linux? (e como usar o comando tty)

Escolha as colunas para exibir

Com ele -o (formato) você pode escolher as colunas que deseja incluir na saída de ps. As colunas são especificadas pelo nome. A lista (grande) os nomes das colunas podem ser vistos no página man na seção intitulada “Especificadores de formato padrão”. Neste exemplo, escolhemos ter o tempo de CPU (pcpu) e a linha de comando com argumentos (args) incluído na saída.

ps -e -o pcpu,args | menos

A saída inclui apenas nossas duas colunas solicitadas.

Classifique a saída por colunas

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

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

O roteiro “-” sobre ele pcpu O parâmetro de classificação fornece uma ordem de classificação decrescente.

Para ver os dez processos mais intensivos da CPU, canalizar a saída através do head comando:

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

Recebemos uma lista ordenada e truncada.

Se adicionarmos mais colunas à nossa tela, podemos classificar por mais colunas. Vamos adicionar o pmem coluna. Esta é a porcentagem da memória do computador que está sendo usada pelo procedimento.. Sem hífen ou mais ” +“, A ordem de classificação é crescente.

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

Recebemos nossa coluna adicional 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 traço em pmem.

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

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

Agora podemos identificar os processos.

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

Elimine processos por ID de procedimento

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

Então, de uma forma ou outra, podemos identificar os processos que estão sendo executados. Conhecendo seu ID de procedimento, nós podemos (Sim é necessário) exclua qualquer um desses processos usando o kill comando. Se quiséssemos matar o procedimento 898, nós usaríamos este formato:

sudo matar 898

Se tudo correr bem, o procedimento termina silenciosamente.

RELACIONADO: Como matar processos do terminal Linux

Mate processos pelo nome

a pkill o comando permite que você matar processos pelo nome. Certifique-se de ter identificado o procedimento correto! Este comando irá terminar o procedimento superior.

sudo pkill top

Mais uma vez, não ter notícias é uma boa notícia. O procedimento termina silenciosamente.

Elimine vários processos pelo nome

Se você tiver várias cópias de um procedimento em execução, ou um procedimento gerou vários processos filho (como o google chrome pode fazer), Como você pode removê-los? Isso é tão fácil. Nós usamos o killall comando.

Temos duas cópias do top running:

ps -e | pega no topo

Podemos terminar ambos com este comando:

sudo killall top

Se não houver resposta, não tem problemas, então ambos os processos terminaram.

sudo killall saída superior em uma janela termonal

Obtenha uma visão dinâmica com o topo

A saída de ps é uma visão instantânea. Não atualiza. Para obter uma visão atualizada de seus processos, Use o top comando. Fornece uma visão dinâmica dos processos em execução no seu computador. A tela é dividida 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.

Começar top com este comando:

principal

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

  • PID: Identificação do procedimento
  • NOME DO USUÁRIO: Nome do titular do procedimento
  • PR: Procedimento prioritário
  • NI: O bom valor do procedimento
  • VIRT: Memória virtual usada pelo procedimento
  • RES: Memória residente usada pelo procedimento
  • SHR: Memória compartilhada usada pelo procedimento
  • S: Status do procedimento. Veja a lista abaixo dos valores que este campo pode assumir
  • %UPC: a porcentagem de tempo de CPU usado pelo procedimento desde a última atualização
  • % MEM: porcentagem de memória física usada
  • CLIMA +: tempo total de CPU usado pela tarefa em centésimos de segundo
  • COMANDO: nome do comando ou linha de comando (nome da linha de comando e parâmetros) Se você não consegue ver a coluna de comando, pressione a tecla "Seta para a direita".

O status do procedimento pode ser um dos seguintes:

  • D: Sono ininterrupto
  • R: Com pressa
  • S: Dormindo
  • T: Rastreamento (parado)
  • COM: Zumbi

Pressione a tecla “Q” para sair de top.

RELACIONADO: 37 Comandos importantes do Linux que você deve conhecer

Antes de matar um procedimento

Certifique-se de que é o que você está procurando e verifique se ele não causa problemas. Em particular, É importante destacar a consulta com o -H (hierarquia) e --forest opções para se certificar de que você não tem processos filho importantes que você esqueceu.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.