Razões pelas quais o Kill pode não funcionar no Linux, como resolvê -lo?

Razões pelas quais o Kill pode não funcionar no Linux, como resolvê -lo?

Todos nós, em um ponto ou outro, experimentamos um programa congelando e não respondendo. Nesses casos, encerrar o programa e reiniciar é uma solução simples e eficiente. Neste artigo, mostraremos como você pode rescindir processos que não respondem usando o comando Kill.

O comando de matar

Como mencionado anteriormente, quando um programa para de responder, e você não pode reiniciá -lo, você precisa de uma nova solução. Nesse ponto, os usuários do Windows abririam seu gerente de tarefas para se livrar do processo congelado. Não há gerenciador de tarefas interno no Linux, mas existe um comando que podemos usar para alcançar o mesmo efeito que a funcionalidade final da tarefa no Windows. Este comando é conhecido como o comando Kill, e podemos usá -lo de várias maneiras para nos ajudar e o sistema a se livrar de instâncias corruptas.

Mate a sintaxe

A sintaxe para o comando Kill é direta.

$ Kill - [Signal] PID

Aqui, duas coisas precisam de explicação - a saber, sinal e pid. Vejamos ambos os um por um e aprender como eles contribuem para a funcionalidade deste comando.

O parâmetro de sinal

Primeiro é o sinal. Sinais são dígitos simples que representam um nome. O comando Kill pode executar tarefas diferentes, dependendo do sinal que você fornece. Os usuários podem usar mais de 60 valores diferentes para sinais, todos os quais executam tarefas separadas e específicas. Para visualizar todas essas opções, você pode usar o seguinte comando:

$ Kill -l

Quando você usa este comando no terminal de comando do Ubuntu, você obtém isso na tela:

Como você pode ver, há um total de 64 opções que você pode selecionar.

Embora existam mais de 60 sinais diferentes, dois dos mais comuns são descritos abaixo.

  1. Sigkill (9): Como o nome sugere, este comando mata completamente o processo sem salvar os dados do programa. Este comando deve ser usado apenas como último recurso.
  2. Sigterm (15): Isso gera um sinal de terminação que fecha o programa de uma maneira de segurança. Este também é o sinal padrão.

Os sinais podem ser especificados ainda mais de três maneiras diferentes descritas abaixo.

1. Podemos especificar o sinal com o respectivo dígito:

$ kill -9 pid

2. Podemos especificar o sinal com seu nome:

$ kill -sigkill pid

3. Podemos especificar o sinal sem SIG no nome.

$ kill -kill pid

Todos esses comandos executam a mesma tarefa.

O parâmetro PID

PID é o número de identificação do processo. Nos sistemas Linux e UNIX, todo processo realizado pelo sistema recebe um número de identificação de processo (referido como pid a seguir). Para matar um processo, é preciso conhecer seu PID. Para encontrar o PID para um determinado processo, podemos usar os seguintes comandos.

$ pidof [nome do processo]
$ PGREP [nome do processo]

Quando você usa esses dois comandos no terminal de comando do Ubuntu, você obtém o seguinte resultado.

Usando o comando Kill

Agora que você entendeu a sintaxe, podemos executar o comando Kill. Por exemplo, estaremos usando o Kill on Thunderbird Mail - um programa pré -instalado no Ubuntu. Primeiro, identificaremos seu PID e depois terminaremos o processo usando o sinal Sigterm.

Primeiro, abra o terminal de comando para o Ubuntu. Uma vez feito, execute o seguinte comando:

$ PGREP Thunderbird

Você deve obter uma saída semelhante à que obtemos na imagem abaixo:

Como você sabe agora, o pid de Thunderbird Mail executa o seguinte comando para encerrar o processo.

$ kill -gterm 7075

Ou

$ kill -15 7075

Ao pressionar Enter, você notará que o processo e sua janela não existem mais. Você também pode encerrar vários processos juntos, inserindo simultaneamente os PIDs dos processos.

$ kill -[sinalização] pid1 pid2… pidn

Além disso, os usuários podem rescindir um processo usando os comandos Kill e PIDOF/PGREP na mesma linha. A sintaxe para esse arranjo é:

$ Kill -[Signal] $ PGREP [Nome do processo]

Razões pelas quais o Kill pode não funcionar

Como afirmado anteriormente, o sinal padrão enviado com o comando de matar é sigterm. Sigterm notifica essencialmente o processo que deve se limpar e ser encerrado. Esta é a maneira "agradável" de encerrar ou matar um processo. No entanto, com alguns processos, é possível que a maneira agradável não o corte.

Se você perceber que o processo que você ordenou ao fim ainda está em funcionamento depois de usar o sinal sigterm, não se preocupe, pois essa é uma complicação comum que ocorre ao usar matar. Como dissemos, isso pode ocasionalmente acontecer e com certos processos.

Para se livrar desse problema, você pode usar o sinal Sigkill para encerrar completamente o processo. O sinal Sigkill permite que o sistema tome o assunto por conta própria. Então, se você encontrar uma situação tão pegajosa, sempre poderá sair dele usando o sinal Sigkill ou -9.

É importante que você use sigkill com moderação e quando apresentado com uma situação que o sigterm não pode resolver. Sigtert continua sendo o padrão e o mais seguro; Portanto, a melhor maneira de encerrar um processo.

O comando killall

O comando Kill é nativo dos sistemas operacionais Linux e de outros UNIX, mas o Comando Killall é para usuários somente para Linux. Este comando permite ao usuário rescindir um processo usando o nome do processo. Não há necessidade de encontrar o PID do processo. A sintaxe para o comando killall é:

$ Killall -[Signal] [Nome do processo]

Este comando pode servir como uma boa alternativa se, por algum motivo, Kill não funcionar para você, mesmo depois das soluções prescritas.

Conclusão

Este artigo aprendeu sobre o comando de matar, seu propósito, sintaxe, parâmetros e uso. Além disso, vimos o que pode causar o comando de matar não funcionar corretamente e corrigir esses problemas. Felizmente, essa tem sido uma leitura informativa e interessante para você, e resolvemos quaisquer problemas que você estava tendo com este comando.