-
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.