< Return to Video

vimeo.com/.../919134074

  • 0:08 - 0:10
    Você tem percebido
    que o seu sistema
  • 0:10 - 0:13
    está se comportando
    de uma maneira não comum.
  • 0:13 - 0:17
    Uma série de processos está
    consumindo recursos desnecessários
  • 0:17 - 0:20
    e você precisa
    tomar uma decisão.
  • 0:21 - 0:24
    Um dos comandos mais utilizados
    para o envio de sinais a processos
  • 0:24 - 0:26
    é o comando "kill".
  • 0:26 - 0:28
    Comando "kill",
    do inglês "matar",
  • 0:28 - 0:31
    não necessariamente
    mata os processos.
  • 0:31 - 0:32
    O correto é afirmar
    que ele envia
  • 0:32 - 0:35
    um determinado sinal
    para o processo.
  • 0:35 - 0:38
    Eu posso enviar um sinal
    para o processo parar,
  • 0:38 - 0:43
    para o processo reiniciar,
    para o processo ser morto,
  • 0:43 - 0:46
    para o processo
    ser suspendido,
  • 0:46 - 0:49
    enfim, eu posso enviar
    vários tipos de sinais
  • 0:49 - 0:51
    para um processo
    utilizando o comando "kill".
  • 0:53 - 0:56
    Vamos dar uma olhada em todas
    as opções que conseguimos explorar,
  • 0:56 - 0:58
    utilizando
    o comando "kill".
  • 0:58 - 1:02
    Primeiramente, eu vou executar
    o comando "kill -l".
  • 1:03 - 1:06
    Quando nós executamos
    esse comando,
  • 1:06 - 1:10
    ele me dá uma lista de possíveis
    sinais que eu posso enviar.
  • 1:10 - 1:12
    Detalhe importante:
    o comando "kill" aceita
  • 1:12 - 1:16
    com que eu passe o sinal
    tanto de forma numérica
  • 1:16 - 1:20
    quanto através do próprio
    nome do sinal.
  • 1:20 - 1:22
    Aqui, nós vamos abordar
  • 1:22 - 1:26
    somente as principais opções
    do comando "kill".
  • 1:26 - 1:29
    Se você tiver interesse
    em obter mais detalhes,
  • 1:29 - 1:32
    é só você ler o manual
    do "kill", o "man kill".
  • 1:32 - 1:35
    Toda vez que eu quiser
    enviar um sinal para o processo,
  • 1:35 - 1:39
    eu tenho que saber
    qual é o PID do processo.
  • 1:39 - 1:42
    Então, eu vou executar
    aqui um processo.
  • 1:42 - 1:47
    Eu vou enviar esse processo
    para o segundo plano, parando-o,
  • 1:47 - 1:51
    e, depois, eu vou enviar um outro
    sinal para o processo com o "kill".
  • 1:51 - 1:53
    Eu vou executar
    o seguinte comando:
  • 1:53 - 2:01
    "grep menos ri, espaço, aspas
    duplas, linux, aspas duplas, barra".
  • 2:01 - 2:04
    Eu estou procurando todas
    as ocorrências da palavra Linux
  • 2:04 - 2:08
    em todos os arquivos a partir
    da raiz, de forma recursiva.
  • 2:08 - 2:10
    Se eu der enter,
    automaticamente,
  • 2:10 - 2:13
    ele vai mostrar uma série
    de informações na tela.
  • 2:13 - 2:14
    Então, eu vou usar
  • 2:15 - 2:17
    esse comando
  • 2:18 - 2:22
    para que ele mande
    o que encontrar
  • 2:22 - 2:25
    para dentro do diretório
    "barra dev barra null".
  • 2:27 - 2:29
    Perceba que o comando
    está executando,
  • 2:29 - 2:32
    porém ele está executando
    em segundo plano.
  • 2:32 - 2:36
    Se der o comando
    "ps aux | grep grep",
  • 2:38 - 2:41
    ele trouxe para mim o comando,
    que está aqui.
  • 2:41 - 2:44
    Então, esse é o PID
    do comando,
  • 2:44 - 2:47
    que é o número
    que identifica o processo.
  • 2:47 - 2:51
    Se eu digitar o comando "jobs",
    ele vai mostrar todos os processos
  • 2:51 - 2:53
    que eu executei.
  • 2:53 - 2:57
    Então, automaticamente,
    tenho dois processos em execução.
  • 2:57 - 2:59
    Dois greps rodando.
  • 2:59 - 3:00
    Vamos imaginar
    o seguinte:
  • 3:00 - 3:03
    se você digitar
    o comando "jobs -l",
  • 3:03 - 3:07
    automaticamente, ele mostra
    o PID do processo.
  • 3:07 - 3:09
    Lembre-se: para poder
    executar o comando "kill",
  • 3:09 - 3:12
    eu tenho que saber
    o PID do processo.
  • 3:12 - 3:15
    Vamos imaginar que eu queira
    enviar um sinal
  • 3:15 - 3:18
    para esse comando
    de PID 959.
  • 3:18 - 3:20
    Eu vou usar
    o comando "kill espaço".
  • 3:20 - 3:22
    Qual o sinal que eu
    quero enviar?
  • 3:22 - 3:26
    Se nós dermos um "kill -l",
    conseguimos ver todos os sinais.
  • 3:26 - 3:29
    Vamos imaginar que eu
    quero mandar um "SIGTSTP",
  • 3:29 - 3:32
    que é o sinal
    de parar o processo.
  • 3:32 - 3:37
    Eu dou um "kill",
    posso usar a opção -20
  • 3:37 - 3:41
    e posso usar
    o PID 959.
  • 3:41 - 3:42
    Pronto.
  • 3:42 - 3:44
    Se nós digitarmos agora
    o comando de "jobs -l",
  • 3:44 - 3:47
    perceba que o processo
    está parado.
  • 3:47 - 3:50
    Esse processo não foi morto,
    ele só foi parado
  • 3:50 - 3:53
    Automaticamente,
    eu consigo mandar um sinal
  • 3:53 - 3:55
    para poder continuar
    esse processo?
  • 3:55 - 3:56
    Sim.
  • 3:57 - 4:01
    "kill" menos o sinal
    que eu vou utilizar,
  • 4:01 - 4:05
    que é SIGCONT,
    que é o 18.
  • 4:05 - 4:11
    Eu posso tanto colocar o -18,
    como eu posso colocar -SIGCONT,
  • 4:11 - 4:14
    e colocar o número
    do PID, 959.
  • 4:14 - 4:20
    Pronto, se eu der o "jobs -l",
    o processo voltou a ser executado.
  • 4:21 - 4:22
    O que nós fizemos?
  • 4:22 - 4:26
    Pegamos um processo, enviamos
    um sinal com "kill" para ele parar.
  • 4:26 - 4:28
    Esse processo parou.
  • 4:28 - 4:29
    Imagine que fosse
    um processo
  • 4:29 - 4:32
    que estava consumindo
    muito recurso na sua máquina.
  • 4:32 - 4:35
    E, depois,
    nós demos um sinal
  • 4:35 - 4:38
    para ele continuar a execução
    normalmente.
  • 4:38 - 4:40
    Um outro sinal que podemos
    mandar para o processo
  • 4:40 - 4:44
    é o sinal para ele parar.
  • 4:44 - 4:46
    O sinal padrão
    de parada de processo
  • 4:46 - 4:50
    é o sinal 15
    ou SIGTERM.
  • 4:50 - 4:54
    Esse sinal permite com que eu
    pare o processo de forma tranquila.
  • 4:54 - 4:56
    Sabe quando você dá,
    por exemplo,
  • 4:56 - 5:00
    o comando "systemctl stop"
    e o nome do serviço?
  • 5:00 - 5:03
    Ou você quer que um processo
    pare de forma tranquila,
  • 5:03 - 5:05
    sem ser parado
    abruptamente?
  • 5:05 - 5:11
    A opção padrão de parada
    de processo é essa: -15 ou SIGTERM.
  • 5:11 - 5:14
    Eu vou executar agora na tela
    e vamos ver o que acontece.
  • 5:14 - 5:18
    "kill -15 959",
    que é o PID.
  • 5:18 - 5:20
    Pronto.
  • 5:20 - 5:25
    Se der um "jobs -l", estará dizendo
    que o processo foi terminado.
  • 5:25 - 5:29
    Processos terminados
    não podem ser continuados,
  • 5:29 - 5:31
    ou seja, ele acabou
    de ser finalizado.
  • 5:31 - 5:34
    Se nós dermos
    novamente um "jobs -l",
  • 5:34 - 5:38
    ele não mais aparece na listagem
    dos processos em execução.
  • 5:38 - 5:40
    Existe uma outra opção
    do comando "kill",
  • 5:40 - 5:42
    que é o que as pessoas
    associam
  • 5:42 - 5:45
    ao fato dele ser usado
    para matar processos,
  • 5:45 - 5:47
    que é a opção -9
  • 5:47 - 5:50
    Ela manda um sinal
    chamado SIGKILL,
  • 5:50 - 5:56
    ou seja, ela manda o processo
    ser morto de forma abrupta.
  • 5:56 - 6:00
    Se você tiver algum arquivo aberto,
    o "kill" não vai se importar.
  • 6:00 - 6:03
    Se alguém estiver usando esse
    arquivo, ele não vai se importar.
  • 6:03 - 6:07
    Ele simplesmente vai parar
    abruptamente o processo.
  • 6:07 - 6:11
    Apesar desta informação ser enviada
    diretamente para o processo,
  • 6:11 - 6:14
    isso pode ocasionar
    alguns problemas graves
  • 6:14 - 6:17
    de corrompimento de dados
    no seu sistema,
  • 6:17 - 6:19
    como, por exemplo,
    se você mandar
  • 6:19 - 6:22
    um sinal com -9
    para um banco de dados.
  • 6:22 - 6:24
    Eu vou executá-lo
    agora, aqui no terminal,
  • 6:24 - 6:26
    para vocês entenderem
    o poder que ele tem.
  • 6:26 - 6:28
    Vamos executar
    o comando "jobs -l".
  • 6:28 - 6:32
    Eu ainda tenho um outro
    processo do grep executando
  • 6:32 - 6:34
    com o PID 965.
  • 6:34 - 6:39
    Vou dar um "kill -9 965".
  • 6:39 - 6:42
    E vou dar um "jobs -l".
  • 6:42 - 6:45
    Perceba que, agora, o processo
    não foi parado, ele foi morto.
  • 6:45 - 6:48
    Então, ele mandou um sinal
    para matar o processo.
  • 6:48 - 6:52
    É possível matar vários processos
    ao mesmo tempo?
  • 6:52 - 6:52
    Sim.
  • 6:52 - 6:56
    Nós vamos ver aqui uma lista
    de processos e vamos matá-los,
  • 6:56 - 6:58
    todos com o comando "kill".
  • 6:58 - 7:02
    Eu vou executar novamente
    o "grep -ri,
  • 7:05 - 7:08
    a palavra linux na raiz,
  • 7:09 - 7:12
    dois e,
  • 7:12 - 7:18
    maior que um, maior
    que barra dev, barra null",
  • 7:18 - 7:20
    mandando
    para segundo plano.
  • 7:21 - 7:24
    Pronto, vou rodar
    algumas outras vezes.
  • 7:24 - 7:27
    Vou executar 10 vezes
    esse comando.
  • 7:29 - 7:35
    Se nós dermos
    um "jobs -l", está lá.
  • 7:35 - 7:38
    Todos os PIDs dos processos
    que estão rodando
  • 7:38 - 7:41
    Para você finalizar todos
    os processos ao mesmo tempo,
  • 7:41 - 7:43
    a gente vai executar
    o seguinte comando:
  • 7:43 - 7:48
    eu vou capturar todos
    os PIDs e vou executar,
  • 7:48 - 7:53
    "kill" e aí, podemos passar
    tanto -9 quanto -15.
  • 7:53 - 7:56
    Lembrando que -9 vai matar
    o processo abruptamente
  • 7:56 - 8:01
    e o -15 vai somente parar
    o processo de forma tranquila.
  • 8:02 - 8:06
    Vou usar o sinal -9,
    que é o SIGKILL,
  • 8:07 - 8:12
    e posso passar todos os PIDs,
    separados por espaço.
  • 8:23 - 8:24
    Perceba que realmente
    dá trabalho.
  • 8:24 - 8:26
    Se tivesse 100
    processos rodando,
  • 8:26 - 8:29
    eu teria que passar
    os 100 números dos PIDs.
  • 8:31 - 8:36
    Se eu der um "jobs -l", só ficou
    executando o processo 1037,
  • 8:36 - 8:38
    que, provavelmente,
    eu o pulei aqui da lista.
  • 8:40 - 8:44
    Vamos aproveitar, então,
    e treinar o -15.
  • 8:48 - 8:49
    Pronto.
  • 8:49 - 8:50
    Esse é o comando "kill",
  • 8:50 - 8:53
    comando usado para podermos
    enviar um sinal para o processo.
  • 8:53 - 8:56
    Você pode mandar um sinal
    para ele parar, continuar,
  • 8:56 - 8:58
    para ele suspender,
    para ele reiniciar.
  • 8:58 - 9:03
    Tudo depende do quanto você
    precisa que o sinal seja enviado
  • 9:03 - 9:06
    e como você quer
    que esse comando se comporte.
  • 9:06 - 9:08
    O comando "kill" permite
    matar processos
  • 9:08 - 9:12
    utilizando o PID,
    o "Process Identification".
  • 9:12 - 9:15
    Existem dois comandos
    que facilitam muito a nossa vida
  • 9:15 - 9:19
    quando o objetivo é matar
    vários processos ao mesmo tempo.
  • 9:19 - 9:22
    Esses comandos
    são "PKILL" e "KILLALL".
  • 9:22 - 9:26
    O PKILL permite matar processos
    utilizando o nome do processo,
  • 9:26 - 9:28
    assim como KILLALL.
  • 9:28 - 9:31
    Então, todos os sinais que enviei
    para os processos usando kill,
  • 9:31 - 9:35
    eu posso fazer também
    com os comandos PKILL e KILLALL,
  • 9:35 - 9:37
    porém, ao invés
    de eu passar o PID,
  • 9:38 - 9:41
    eu passo o nome
    do processo.
  • 9:42 - 9:43
    Vamos executar agora.
  • 9:44 - 9:48
    Eu vou gerar uma lista de processos
    novamente com o comando grep.
  • 9:51 - 9:55
    Cinco processos foram gerados
    com esse comando grep:
  • 9:55 - 9:58
    "grep menos ri, linux, barra 2,
    e comercial, maior que 1,
  • 9:58 - 10:01
    maior que barra dev,
    barra null, e comercial".
  • 10:01 - 10:05
    Se nós dermos um "jobs -l",
    estão lá todos os processos.
  • 10:05 - 10:08
    Todos os processos
    tem o nome de "grep".
  • 10:08 - 10:11
    Nesse momento, eu vou
    executar o comando "pkill"
  • 10:11 - 10:13
    e posso usar todas
    as opções de sinais
  • 10:13 - 10:17
    que vimos no "kill",
    -9, -15.
  • 10:17 - 10:22
    Eu vou usar a opção -15 para parar
    esses processos de forma natural.
  • 10:22 - 10:24
    E, ao invés de eu
    passar PID por PID,
  • 10:24 - 10:26
    como eu faria no "kill"
    eu passo simplesmente o nome
  • 10:26 - 10:33
    do comando que foi executado,
    no caso aqui, o próprio "grep".
  • 10:34 - 10:35
    Quando eu dou
    um enter,
  • 10:35 - 10:39
    ele termina todos os processos
    com o nome "grep".
  • 10:39 - 10:41
    Isso permite com que eu
    tenha muito mais velocidade
  • 10:41 - 10:45
    na execução do comando
    quando quiser finalizar um processo
  • 10:45 - 10:48
    ou vários processos
    utilizando o nome.
  • 10:48 - 10:50
    O comando
    KILLALL funciona
  • 10:50 - 10:52
    de maneira parecida
    com o comando PKILL.
  • 10:52 - 10:55
    Nós conseguimos
    matar diversos processos
  • 10:55 - 10:57
    utilizando o nome
    dos processos.
  • 10:57 - 10:59
    Eu vou executar, agora,
    novamente o "grep"
  • 10:59 - 11:02
    para que possamos visualizar isso
    acontecendo dentro do sistema.
  • 11:03 - 11:06
    Eu vou executar agora
    5 vezes o comando "grep"
  • 11:06 - 11:07
    para que gerem
    os processos
  • 11:07 - 11:09
    e a gente possa utilizar
    o KILLALL para matá-lo.
  • 11:10 - 11:13
    1, 2, 3, 4, 5.
  • 11:14 - 11:18
    Se nós executarmos o comando
    "jobs -l", está lá,
  • 11:18 - 11:20
    5 processos
    de execução.
  • 11:20 - 11:22
    O nome do processo é "grep".
  • 11:22 - 11:26
    Eu vou usar o "killall"
    para poder matar esses processos.
  • 11:26 - 11:29
    Vou utilizar os mesmos sinais
    que eu uso no "kill" e no "pkill".
  • 11:29 - 11:33
    Vou usar, por exemplo, o -9
    para matar o processo forçando.
  • 11:33 - 11:34
    E o comando
    que quero matar
  • 11:34 - 11:37
    são todos os comandos
    que contêm o nome "grep".
  • 11:37 - 11:39
    Recebi uma mensagem
    que o comando "killall"
  • 11:39 - 11:41
    não foi encontrado.
  • 11:41 - 11:47
    Vamos instalá-lo através do comando
    "apt install psmisc".
  • 11:47 - 11:48
    Vou utilizar
    a opção menos y
  • 11:48 - 11:51
    para ele dizer sim
    para todos os questionamentos.
  • 11:55 - 11:57
    Pronto, uma vez
    instalado o "psmisc",
  • 11:57 - 11:59
    ele trouxe para mim
    o "killall".
  • 11:59 - 12:03
    E eu vou executar novamente
    o comando "killall -9"
  • 12:03 - 12:04
    e, automaticamente,
    ele matou
  • 12:04 - 12:08
    todos os processos
    que tinham o nome "grep".
  • 12:08 - 12:11
    Com esses três comandos,
    "kill", "pkill" e "killall",
  • 12:11 - 12:14
    nós podemos enviar diversos
    sinais aos processos.
  • 12:14 - 12:18
    Podemos parar, reiniciar,
    suspender, continuar.
  • 12:18 - 12:21
    Ou seja, você pode
    manipular os processos
  • 12:21 - 12:22
    conforme
    a sua necessidade
  • 12:22 - 12:25
    e se tornar ainda
    mais eficiente
  • 12:25 - 12:28
    na operação do terminal Linux,
    utilizando processo.
Title:
vimeo.com/.../919134074
Video Language:
Portuguese, Brazilian
Duration:
12:32

Portuguese, Brazilian subtitles

Revisions Compare revisions