Boolean World

linux kill cover image

em um sistema operacional, existem muitos programas, que podem ser executados por um usuário ou pelo próprio sistema operacional (como os Serviços de Sistema). Tais programas que estão rodando no sistema são chamados de “processos”. Normalmente, um processo termina por si só quando eles terminam com a sua tarefa, ou quando você lhes pede para sair, pressionando um atalho de teclado ou clicando no botão “Fechar”.

no entanto, às vezes um processo pode desligar ou consumir um monte de CPU ou RAM. Nesta situação, você gostaria de “matar” manualmente o processo. Neste artigo, vamos olhar para várias ferramentas que você pode usar para matar processos em um sistema Linux.

localizando o processo para matar

a fim de matar um processo, você deve primeiro localizar os detalhes do processo. Você pode fazer isso através de três comandos — toppspidof e pgrep. Dependendo da situação, você pode usar um desses comandos para este propósito.

como veremos mais adiante neste artigo, você pode matar um processo pelo seu nome ou pelo seu ID de processo (PID). O PID é um número que identifica um processo de forma única. Matar pelo ID do processo é útil quando você quer matar apenas um processo específico. Por outro lado, matar pelo nome do processo é útil quando você quer matar todas as instâncias em execução de um programa em particular.

localizando o processo com o comando superior

vamos primeiro olhar para o comando top. Acenda o comando superior escrevendo:

top

irá obter uma interface interactiva, como mostrado abaixo. Você pode navegar por esta lista para encontrar o nome ou o PID do processo que você deseja matar.

o comando superior mostrando uma lista de processos.

para navegar nesta lista, pode usar as teclas cima / baixo. Além disso, o comando top também tem maneiras de filtrar processos pelo uso da CPU, nomes de usuário e processos, que você pode ler neste guia.

a coluna mais à esquerda contém o PID do processo, e o lado direito contém o nome do programa. Como exemplo, na imagem acima temos o processo vnstatd executando com um ID de processo de 263.

Localização o processo com o ps e comandos grep

Outra maneira de obter uma lista de processo está executando:

ps aux

o comando acima, temos usado as bandeiras aux, que possuem os seguintes significados:

  • a: Mostrar processos de todos os usuários
  • u: exibe o usuário que está usando o processo de
  • x: Mostra todos os processos. (Sem isso, ps não mostrará processos em execução em um ambiente gráfico.)

o resultado do comando é semelhante ao de top. O PID está disponível na segunda coluna da esquerda, e o nome do processo está disponível na coluna mais à direita.

the results of the" ps aux " command."ps aux" command.

A vantagem de usar ps é que você pode facilmente filtrar essa lista com o grep comando. Por exemplo, para localizar um processo associado com o termo “vnstat”, você pode usar:

ps aux | grep -i vnstat

processos de Filtragem com o ps e o grep, com um resultado positivo.

Aqui, nós temos dois resultados — o vnstatd processo, bem como o grep processo. Desde que nós estávamos procurando por todas as instâncias do termo “vnstat”, e nós também estávamos executando grep com “vnstat” como seu argumento, temos grep bem nos resultados.

assim, mesmo quando não há processos relacionados com o” vnstat”em execução, obteríamos uma entrada mostrando o processo:

filtrando processos com ps e grep.

assim, mesmo que tenhamos um resultado, não há processos que nos interessem.

Encontrar o PID com pidof e pgrep

top e psgrep combinação nos permite busca por processos. Por outro lado, se você souber o nome exato de um processo, você pode usar pidof para encontrar seu PID.

Usandopidof é bastante simples. Para obter o Pid de um processo com o nome exato de “nginx”, use:

pidof nginx

Se há processos com o nome exato de “nginx”, você vai obter uma lista de PIDs, como mostrado abaixo. Se não houver nenhum, você não terá nada como a saída.

The pidof command

If you don’t know the full name, you can usepgrep em vez depidof. Como um exemplo, para procurar todos os processos que contenham “ngin” em algum lugar em seu nome, execute:

pgrep ngin

Isso irá corresponder a processos com o nome exato de “nginx”, bem como qualquer outro processo que coincide com os mesmos critérios. Para o nosso sistema, note que temos todos os PIDs que pertenciam a “nginx” na imagem acima.

o comando pgrep.

The pidof andpkill commands give you far less information. Como veremos na próxima seção, há algumas circunstâncias em que você não pode matar um processo. O resultado de top e ps contém informações adicionais que o ajudam a determinar se pode mesmo matar um processo.que processos pode matar?

Agora que localizamos o processo, é hora de matá-lo. No entanto, antes de aprendermos a fazê-lo, há algumas coisas que precisam de saber.

Se você é um usuário normal, você pode matar seus próprios processos, mas não aqueles que pertencem a outros usuários. Both topand ps show the user under which a process is running. No caso de top, a segunda coluna contém o nome do utilizador. Com ps aux, a primeira coluna contém o nome do utilizador.

no entanto, um usuário de raiz pode matar todos os processos. Você pode adicionar sudo antes de qualquer comando para executá-lo como root, ou obter um shell de root digitando su e, em seguida, executar o comando.

no Linux, quando um processo é morto, um” sinal de terminação ” é entregue ao processo. Embora existam muitos tipos diferentes de sinais, Nós lidamos principalmente com os sinais “SIGTERM” e “SIGKILL”. Têm um valor numérico de 15 e 9, respectivamente. Por padrão, todos os comandos de eliminação de processos usam “SIGTERM”, que permite que o programa execute algum código antes que ele saia, permitindo-lhe terminar”graciosamente”. Se você quiser terminar o processo à força, você pode usar “SIGKILL” em vez disso.

O núcleo Linux mantém alguma informação relacionada com o estado de um processo. Quando um processo termina, o kernel deve manter a informação ao redor, de modo que o processo pai pode descobrir se o processo filho foi capaz de completar suas tarefas e se terminou por conta própria, ou foi morto. Até que o pai o tenha feito, esses processos “zumbis” aparecerão na lista de processos. Você não pode matar tal processo porque é apenas uma entrada na lista de todos os processos, e ele não tem um processo real associado a ele.

Quando um processo realiza operações de entrada/saída (como ler ou escrever para discos), diz-se que ele está em um estado de “sono ininterrupto”. Não se pode matar um processo neste estado.

pode dizer se um processo está no estado”zombie “(Z) ou”sono ininterrupto”(D) olhando para a 8ª coluna dotop/ps saída.

a Matar um processo

Existem vários comandos que você pode usar para matar um processo — killkillallpkill e top. Vamos começar do mais simples: o comando killall.

Matar processos com o comando killall

o comando killall é uma das formas mais fáceis de matar um processo. Se você souber o nome exato de um processo, e você sabe que ele não está funcionando como outro usuário e não Z ou D estados, então você pode usar este comando diretamente, não há nenhuma necessidade para localizar manualmente o processo que descrevemos acima.

Por padrão, por exemplo, para matar um processo chamado “firefox”, execute:

killall firefox

para matar à força o processo com SIGKILL, execute:

killall -9 firefox

Você também pode usar -SIGKILL em vez de -9.

Se você quiser matar processos interativamente, você pode usar -i, assim:

killall -i firefox

Se você quer matar um processo em execução como um usuário diferente, você pode usar sudo:

sudo killall firefox

Você também pode matar um processo que está em execução por um determinado período de tempo, com o -o e -y sinalizadores. Então, se você quer matar um processo que está em execução por mais de 30 minutos, use:

killall -o 30m <process-name>

Se você quer matar um processo que está em execução durante menos de 30 minutos, use:

killall -y 30m <process-name>

da mesma forma, use as seguintes abreviaturas para as respectivas unidades de tempo:

s seconds
m minutes
h hours
d days
w weeks
M months
y years

Killing processes with the pkill command

Sometimes, you only know part of a program’s name. Assim como pgreppkill permite matar processos com base em correspondências parciais. Por exemplo, se você quer matar todos os processos com o nome de apache no nome, execute:

pkill apache

Se você deseja usar um SIGKILL em vez de um SIGTERM, use:

pkill -9 apache

Novamente, você também pode usar -SIGKILL em vez de -9.

Matar processos com o comando kill

Usando o comando kill é simples. Logo que tenha descoberto o PID do processo que deseja matar, poderá terminá-lo com o comando kill. Por exemplo, se você quiser matar um processo com um PID de 1234, então use o seguinte comando:

kill 1234

como mencionamos anteriormente, o padrão é usar um SIGTERM. Para usar um SIGKILL, use -9 ou -SIGKILL como vimos antes:

kill -9 1234

Matando processos com o comando top

é muito fácil matar processos usando o top comando. Primeiro, procure o processo que você quer matar e anote o PID. Em seguida, pressione k enquanto o topo está em execução (isto é sensível à capitalização). Ele irá levá-lo a entrar no PID do processo que você quer matar.

Depois de entrar no PID, carregue em enter. Agora ele vai perguntar Que sinal você quer usar para matar o processo. Se você quiser usar SIGTERM (15), Então simplesmente pressione enter como é o sinal padrão. Se você quiser usar SIGKILL (9), em seguida, digite 9 e pressione enter.

Se deixar o ID do processo em branco e carregar em enter directamente, irá terminar o processo mais avançado da lista. Pode deslocar-se com as teclas de Cursores e alterar o processo que deseja matar desta forma.

Conclusão

neste post, vimos as várias maneiras de matar processos no Linux. A aprendizagem destes comandos é essencial para uma administração e gestão do sistema adequadas. Se você quiser explorar mais desses comandos, dê uma olhada em suas respectivas páginas de manual.Se gostou deste post, por favor partilhe-o

Deixe uma resposta

O seu endereço de email não será publicado.