Você tem percebido
que o seu sistema
está se comportando
de uma maneira não comum.
Uma série de processos está
consumindo recursos desnecessários
e você precisa
tomar uma decisão.
Um dos comandos mais utilizados
para o envio de sinais a processos
é o comando "Kill".
Comando "kill",
do inglês "matar",
não necessariamente
mata os processos.
O correto é afirmar
que ele envia
um determinado sinal
para o processo.
Eu posso enviar um sinal
para o processo parar,
para o processo reiniciar,
para o processo ser morto,
para o processo
ser suspendido,
enfim, eu posso enviar
vários tipos de sinais
para um processo
utilizando o comando "kill".
Vamos dar uma olhada em todas
as opções que conseguimos explorar,
utilizando
o comando "kill".
Primeiramente, eu vou executar
o comando "kill -l".
Quando nós executamos
esse comando,
ele me dá uma lista de possíveis
sinais que eu posso enviar.
Detalhe importante:
o comando "kill" aceita
com que eu passe o sinal
tanto de forma numérica
quanto através do próprio
nome do sinal.
Aqui, nós vamos abordar
somente as principais opções
do comando "kill".
Se você tiver interesse
em obter mais detalhes,
é só você ler o manual
do "kill", o "man kill".
Toda vez que eu quiser
enviar um sinal para o processo,
eu tenho que saber
qual é o PID do processo.
Então, eu vou executar
aqui um processo.
Eu vou enviar esse processo
para o segundo plano, parando-o,
e, depois, eu vou enviar um outro
sinal para o processo com o "kill".
eu vou executar o seguinte comando:
grep -ri "linux" /
Eu estou procurando todas
as ocorrências da palavra Linux
em todos os arquivos a partir
da raiz, de forma recursiva.
Se eu der enter,
automaticamente,
ele vai mostrar
uma série de informações na tela.
Então, eu vou usar
esse comando
para que ele mande
o que encontrar
para dentro do diretório
/dev/null
Perceba que o comando
está executando,
porém ele está executando
em segundo plano.
Se der o comando
"ps aux | grep grep",
ele trouxe para mim o comando,
que está aqui.
Então, esse é o PID
do comando,
que é o número
que identifica o processo.
Se eu digitar o comando "jobs",
ele vai mostrar todos os processos
que eu executei.
Então, automaticamente,
tenho dois processos em execução.
Dois greps rodando.
Vamos imaginar
o seguinte:
se você digitar
o comando "jobs -l",
automaticamente, ele mostra
o PID do processo.
Lembre-se: para poder
executar o comando "kill",
eu tenho que saber
o PID do processo.
Vamos imaginar que eu queira
enviar um sinal
para esse comando
de PID 959.
Eu vou usar
o comando "kill "
Qual o sinal que eu
quero enviar?
Se nós dermos um "kill -l",
conseguimos ver todos os sinais.
Vamos imaginar que eu
quero mandar um "SIGTSTP",
que é o sinal
de parar o processo.
Eu dou um "kill",
posso usar a opção -20
e posso usar o PID 959.
Pronto.
Se nós digitarmos agora
o comando de "jobs -L",
perceba que o processo
está parado.
Esse processo ele não foi morto,
ele só foi parado automaticamente.
Eu consigo mandar um sinal
para poder continuar esse processo? Sim,
que o menos o sinal que eu vou utilizar e
seguir cont. Que é o 18.
Eu posso tanto colocar o -18
como eu posso colocar menos
seguir count
e colocar o número do PID nove cinco nove?
Pronto, se eu der o jobs menos ele,
o processo voltou a ser executado.
O que nós fizemos?
Nós pegamos um processo, enviamos um sinal
para ele com Quil para ele parar.
Esse processo parou.
Imagine que fosse um processo que estava
consumindo muito recurso na sua máquina
e depois nós demos um sinal
para ele continuar a execução normalmente.
Um outro sinal que a gente pode mandar
para o processo é o sinal para ele parar.
O sinal padrão de parada de processo
é o sinal
15 ou se Guilherme,
esse sinal permite com que eu
pare um processo de forma tranquila.
Sabe quando você dá, por exemplo,
o comando System CTL Stop
e o nome do serviço?
Ou você quer que um processo pare de forma
tranquila, sem ser parado abruptamente?
A opção padrão de parada de processo
é essa -15 ou seguinte.
Eu vou executar
agora na tela e vamos ver o que acontece
que o -15 é nove cinco nove que é o PID.
Pronto.
Se der um de obs menos ele,
ele está dizendo que o processo
foi terminado.
Processos terminados
não podem ser continuados, ou seja,
ele acabou de ser finalizado.
Se nós dermos novamente um de obs menos
ele, ele não
mais aparece na listagem
dos processos em execução.
Existe uma outra opção do comando kill,
que é a qual as pessoas associam
ao fato de ele ser usado para matar,
processo que é a opção -9 a opção -9.
Ela manda um sinal chamado seguinte.
Ou seja, ela manda o processo
ser morto de forma abrupta.
Se você tiver algum arquivo aberto,
os kill não vai se importar.
Se tiver alguém usando esse arquivo,
ele não vai se importar,
ele simplesmente vai parar
abruptamente o processo.
Apesar dessa formato, desta informação
ser enviada direta para o processo,
isso pode ocasionar alguns problemas
graves de corrompimento de dados
no seu sistema,
como por exemplo, se você mandar
um sinal com -9 para um banco de dados,
eu vou executar
ele agora aqui no terminal
para vocês entenderem o poder que ele tem.
Vamos executar o comando de OBS menos ele.
Eu ainda tenho o meu processo.
Um outro processo do grep
executando com PID 09h30 cinco
vou dar um kill -9
nove meia cinco
e vou dar um de obs menos ele.
Perceba que agora o processo
não foi parado, ele foi morto,
então ele mandou um sinal
para matar o processo.
É possível matar vários processos ao mesmo
tempo?
Sim, nós vamos ver aqui
uma lista de processos
e vamos matá los todos com o comando kill.
Eu vou executar novamente o grep
menos erre.
A palavra Linux
na raiz dois
é maior que um, maior que barra dev
ba no mandando para segundo plano.
Pronto, vou rodar algumas outras vezes.
Como executar dez vezes esse comando?
Se nós dermos um de obs menos ele está lá.
Todos os pides dos processos
que estão rodando para você
finalizar todos os processos ao mesmo
tempo, a gente vai executar o seguinte
comando eu vou capturar todos os pides
e vou executar kill.
E aí podemos passar tanto -9 quanto -15.
Lembrando que -9 vai matar o processo
abruptamente e o -15
Ele vai somente parar o processo
de forma tranquila.
Vou usar o sinal -9,
que é o seguinte que eu
posso passar todos os pides
separado por espaço.
Perceba que realmente dá um trabalho.
Se eu tivesse 100 processos aqui rodando,
eu teria que passar ali
os 100 números dos pides.
Se eu der um de obs menos,
ele só ficou executando o processo
dez 37 que provavelmente eu pulei
ele aqui da lista.
Vamos aproveitar então e treinar por -15.
Pronto,
esse é o comando
que o comando usado para a gente
poder enviar um sinal para o processo.
Você pode mandar um sinal para ele
continuar,
pedir, suspender para ele reiniciar.
Tudo depende do quanto você precisa
que o sinal seja enviado e como você quer
que esse comando se comporte.
O comando kill permite matar processos
utilizando o PID, o Process
Identification.
Existem dois comandos
que facilitam muito a nossa vida
quando o objetivo é matar vários processos
ao mesmo tempo.
Esses comandos são pequenos, é o que o
ou o pequeno permite matar processos
utilizando o nome do processo,
assim como killall.
Então todos os sinais que eu enviei
para os processos usando kill
eu posso fazer também
com um comando pequeno e kill,
porém ao invés de eu passar o PID
eu passo
o nome do processo.
Vamos executar agora
eu vou gerar uma lista de processos
novamente
com o comando grep.
Cinco processos
foram gerados com esse comando grep
grep menos e linux barra
dois maior e um maior
que barra deve recomeçar
se nós dermos um de obs menos
ele, estão lá todos os processos,
todos os processos tem o nome de grep.
Nesse momento
eu vou executar o comando p kill
e eu posso usar todas as opções de sinais
que nós vimos no kill -9, -15.
Eu vou usar a opção -15 para parar
esses processos de forma natural
e ao invés de eu passar PID por PID,
como eu faria no que eu passo?
Simplesmente o nome do
comando que foi
executado, no caso aqui, o próprio grep.
Quando eu dou um enter,
ele termina todos os processos
com o nome grep.
Isso permite com que eu tenha muito mais
velocidade na execução do comando
quando eu quiser finalizar um processo
ou vários processos utilizando o nome.
O comando kill funciona de maneira
parecida com um comando pequeno.
Nós conseguimos matar diversos processos
utilizando o nome dos processos.
Eu executar agora novamente o grep
para que a gente possa visualizar isso
acontecendo dentro do sistema.
Eu vou executar agora
cinco vezes o comando grep
para que gerem os processos e a gente
possa utilizar o que o HAL para matá lo.
Uma, duas, três, quatro, cinco.
Se nós executarmos o comando de obs menos
ele está lá.
Cinco O processo de execução
O nome do processo é grep.
Eu vou usar o kill
para poder matar esses processos.
Vou utilizar os mesmo
sinais que eu uso no kill e no pq
eu vou colocar por exemplo
os ao -9 para matar o processo forçando.
E o comando que quero matar é o
todos os comandos que contem o nome grep.
Eu recebi uma mensagem
que o comando killall não foi encontrado.
Vamos instalá lo através do comando
apertei install ps misc.
Vou utilizar a opção menos y para ele
dizer sim para todos os questionamentos.
Pronto, uma vez instalado
parece me que ele trouxe para mim
o kill e ele
eu vou executar novamente
o comando kill ao -9
e automaticamente ele matou
todos os processos que tinham o nome grep
com esses três comandos kill pq eu e kill
nós podemos enviar diversos
sinais aos processos, podemos parar,
reiniciar, suspender, continuar.
Ou seja, você pode manipular os processos
conforme a sua necessidade
e se tornar ainda mais eficiente
na operação do terminal Linux,
utilizando o processo de.