interessado em aprender mais sobre a administração Linux? Explore esses cursos de treinamento Linux.
- Introduction to Linux (LFS101x) – Free
- Essentials of Linux System Administration (LFS201)
Learn how to kill errant processes in this tutorial from our archives.
Imagine isto: você lançou uma aplicação (seja a partir do seu menu favorito ou da linha de comandos) e você começa a usar essa aplicação lançada, apenas para que ela se bloqueie em si, pare de executar ou morra inesperadamente. Você tenta executar o aplicativo novamente,mas acontece que o original nunca realmente fechou completamente.o que faz? Tu matas o processo. Mas como? Acredite ou não, a sua melhor aposta está, na maioria das vezes, dentro da linha de comando. Felizmente, o Linux tem todas as ferramentas necessárias para capacitá-lo, o Usuário, para matar um processo errante. No entanto, antes de lançar imediatamente esse comando para matar o processo, você primeiro tem que saber qual é o processo. Como é que tratas desta tarefa em camadas? Na verdade, é muito simples…quando conhecemos as ferramentas à nossa disposição.deixa-me apresentar-te as ferramentas.
os passos que vou esboçar irão funcionar em quase todas as distribuições Linux, seja um desktop ou um servidor. Vou lidar estritamente com a linha de comando, então abra o seu terminal e prepare-se para digitar.
localizar o processo
o primeiro passo para matar o processo sem resposta é localizá-lo. Existem dois comandos que eu uso para localizar um processo: top e ps. Top é uma ferramenta que todo administrador deve conhecer. Com o top, você recebe uma lista completa do processo em execução. A partir da linha de comandos, emitir top para ver uma lista de seus processos em execução (Figura 1).
desta lista você verá algumas informações bastante importantes. Por exemplo, o cromado não responde. De acordo com nossa exibição de topo, podemos discernir que existem quatro instâncias de cromo rodando com IDs de processo (PID) 3827, 3919, 10764, e 11679. Esta informação será importante para ter com um método particular de matar o processo.
embora o topo seja incrivelmente útil, nem sempre é o meio mais eficiente de obter a informação que você precisa. Digamos que você sabe que o processo Chrome é o que você precisa matar, e você não quer ter que olhar através da informação em tempo real oferecida pelo top. Para isso, você pode fazer uso do comando ps e filtrar a saída através do grep. O comando ps reporta uma imagem de um processo actual e o grep imprime linhas correspondentes a um padrão. A razão pela qual filtramos ps através do grep é simples: Se você emitir o comando ps por si só, você receberá uma listagem instantânea de todos os processos atuais. Só queremos a lista associada ao Chrome. Portanto, este comando seria:
ps aux | grep chrome
aux opções são as seguintes:
-
a = mostrar processos de todos os usuários
-
u = mostrar o processo do usuário/proprietário
-
x = também mostra processos que não são ligados a um terminal
O x opção é importante quando você está caçando para obter informações sobre uma aplicação gráfica.
Quando emitir o comando acima, ser-lhe-á dada mais informação do que necessita (Figura 2) para matar um processo, mas por vezes é mais eficiente do que usar o top.
Killing the process
Now we come to the task of killing the process. Temos duas informações que nos ajudarão a matar o processo errante.:
-
nome do processo
-
ID do processo
que você usa irá determinar o comando usado para terminar. Existem dois comandos usados para matar um processo de:
-
matar – Matar um processo pelo ID
-
killall – mata um processo pelo nome
também Existem diversos sinais que podem ser enviados para matar comandos. O sinal que enviar será determinado pelos resultados que quer do comando kill. Por exemplo, você pode enviar o sinal HUP (desligar) para o comando kill, que irá efetivamente reiniciar o processo. Esta é sempre uma escolha sábia quando você precisa que o processo reinicie imediatamente (como no caso de um daemon). Você pode obter uma lista de todos os sinais que podem ser enviados para o comando kill emitindo kill-l. você vai encontrar um grande número de sinais (Figura 3).
os sinais de morte mais comuns são::
Signal Name |
Single Value |
Effect |
SIGHUP |
Hangup |
|
SIGINT |
Interrupt from keyboard |
|
SIGKILL |
Kill signal |
|
SIGTERM |
Termination signal |
|
SIGSTOP |
17, 19, 23 |
Stop the process |
o que é bom sobre isso é que você pode usar o valor do sinal no lugar do nome do sinal. Então você não tem que memorizar todos os nomes dos vários sinais. então, vamos agora usar o comando kill para matar a nossa instância do chrome. A estrutura para este comando seria:
kill SIGNAL PID
onde o sinal é o sinal a ser enviado e PID é o ID do processo a ser morto. Já sabemos, pelo nosso comando ps, que os IDs que queremos matar São 3827, 3919, 10764 e 11679. Para enviar o sinal de morte, emitimos os comandos.:
kill -9 3827kill -9 3919kill -9 10764kill -9 11679
Uma vez que tenhamos emitido os comandos acima, todos os processos chrome terão sido mortos com sucesso.vamos pelo caminho mais fácil! Se nós já sabemos que o processo queremos matar é chamado de chrome, podemos usar o comando killall e enviar o mesmo sinal, o processo da seguinte forma:
killall -9 chrome
A única ressalva para o comando acima é que ele não pode pegar todos de execução chrome processos. Se, depois de executar o comando acima, emitir o comando ps aux|grep chrome e ver os processos restantes em execução, a sua melhor aposta é voltar ao comando kill e enviar o sinal 9 para terminar o processo pelo PID.
processos finais facilitados
como você pode ver, matar processos errantes não é tão desafiador quanto você poderia ter pensado. Quando eu acabo com um processo teimoso, eu tendem a começar com o comando killall como é o caminho mais eficiente para a terminação. No entanto, quando você acaba com um processo realmente aguerrido, o comando kill é o caminho a seguir.
aprenda mais sobre o Linux através do curso livre “Introdução ao Linux” da Linux Foundation e edX.