Primeiras aulas do curso Linux II: Programas, processos e pacotes

Linux II: Programas, processos e pacotes

Kill, ps, grep - Kill, ps e grep

Bem-vindo ao Curso de Linux II: Programas, processos e pacotes! Neste curso, que é continuação do Curso de Linux I: Conhecendo e utilizando o terminal iremos aprender diversas coisas:

Vamos começar?

Cada comando que invocamos é executado pelo CPU. Alguns são finalizados rapidamente como o ls e o mkdir. Outros demoram mais tempo para parar de executar, alguns exemplos são o firefox e o gedit. Perceba que se, por exemplo, abrirmos o Firefox ou o editor de texto gedit, eles ficam em execução. Para sabermos quais processos estão sendo executados no momento, usamos o comando ps no Terminal.

executando ps no terminal

Perceba que só serão mostrados os processos do bash (Terminal) atual naquele instante e a execução do comando ps. Queremos saber de todos os processos em todo o sistema, então fazemos ps -e. Nos aparecerá uma lista extensa.

executando ps no terminal

Note que o Firefox ainda está em execução. A listagem dos processos exibe não só o nome do processo mas também seu ID. Podemos utilizar o ID para finalizarmos um programa usando o comando kill + ID, para encerrarmos o Firefox, neste caso, fazemos:

kill 16546

Alguns programas, quando abertos novamente, após matarmos seu processo, mostrarão uma mensagem de alerta para dizer que foram fechados de uma maneira diferente da comum (clicando no botão de fechar, por exemplo) e tentam se recuperar, Firefox por exemplo, mostra uma mensagem semelhante a da imagem a seguir:

mensagem de recuperação do firefox: restaurar abas

Muitas vezes não conseguimos matar o processo quando o programa trava e para termos certeza de que conseguiremos finalizá-lo, forçando a finalização, podemos usar o modificador -9 para o comando kill da seguinte forma:

kill -9 16546

A diferença para do kill com e sem o modificador -9 é simples: sem o modificador, o comando solicita o fechamento do programa, dando uma chance para o programa se encerrar sozinho, com o modificador essa chance não existe, o processo é encerrado imediatamente.

Podemos mostrar mais detalhes sobre os processos que estão em execução, além de seu nome e ID. Para isso fazemos ps -ef, este comando mostra a localização dos programas, o instante em que eles foram inicializados e outras informações. A imagem abaixo ilustra a saída desse comando.

saída de todas as informações dos processos com ps -ef

Porém ainda fica difícil encontrar um programa que estejamos procurando com essa listagem enorme de processos. Podemos usar o comando ps -ef | grep NomeDoPrograma para filtrar os resultados da listagem:

ps -ef | grep firefox

O comando grep é utilizado para filtragem de dados dada uma entrada, neste caso a entrada é o resultado do comando ps. O | é um redirecionador de saídas de programas para programas, ou seja, ele redireciona a saída do comando ps para ser usada como entrada para o comando grep. Por isso, são mostrados apenas as linhas que possuam a palavra firefox:

filtrando resultados com o grep

O comando grep também serve para pesquisarmos linhas com palavras específicas dentro de um arquivo de texto, no caso do arquivo google.txt que criamos no curso anterior, podemos pesquisar as linhas que tenham a palavra California da seguinte forma:

grep California google.txt

O grep será um comando muito poderoso, pois o utilizaremos sempre que precisarmos encontrar os processos que queremos encerrar ou obter informações.

Killall, top - Killall e top

Os processos consomem uma determinada quantidade de espaço na CPU, mas como podemos descobrir esse consumo? Para isso o Linux disponibiliza um comando chamado top, que mostra a situação dos processos, do processador e da memória, além de outras informações em uma única tela.

saída do comando top no terminal

Esta lista de processos está organizada pelo uso da CPU, e se atualiza dependendo desse uso. Experimente abrir uma janela do navegador Firefox, por exemplo, e navegar para algum site. Deverá notar uma elevação no consumo de memória e CPU pelo Firefox e depois aos poucos uma queda neste mesmo consumo.

Para vermos um novo comando muito útil, experimente deixar abertas, duas abas executando o comando top. Após isso abra mais uma aba e verifique o status dos processos desses comandos com o comando ps, lembra dele?

ps -ef | grep top

Veremos a listagem filtrada exibindo apenas os processos que estão executando o comando top. Nenhuma novidade até aqui:

lista de processos filtrada por top

Visto a lista de processos do top, como podemos fazer para encerrar todos os processos que estão executando esse comando? Poderíamos usar o comando kill fornecendo todos os IDs da seguinte maneira:

kill -9 16905 16977

Ou usando um outro comando que chamado killall. Ele permite matar todos os processos de um mesmo programa, ou seja, com um mesmo nome, sem precisar digitar seus ID's, como era feito antes com o kill. Exemplo:

killall top

Podemos usar o modificador - 9 igual fazemos com o comando kill:

killall -9 top

Assim, serão finalizados todos os processos com o nome top. Verifique as abas estavam executando o comando top, elas devem ter parado de exibir e atualizar a listagem dos processos em execução.

Jobs, bg, fg, pstree, & - Jobs, bg, fg, pstree, &

Agora que já sabemos visualizar quais processos estão rodando, vamos nos aprofundar um pouco mais em sua análise. Vamos inicialmente abrir o Firefox pelo terminal. Para isso digitamos no terminal o comando firefox.

Quando mandamos executar o Firefox por meio do Terminal, o Terminal fica travado enquanto o Firefox estiver aberto, nós não conseguimos mais digitar quaisquer comandos. Isso acontece porque o Terminal está executando o processo do Firefox dentro dele.

Para podermos continuar trabalhando com os comandos do Terminal, basta abrirmos uma nova aba através do menu superior do Terminal:

Abrindo aba no terminal

Agora podemos voltar a utilizar normalmente o terminal enquanto o outro se ocupa com o Firefox.

Em aulas passadas vimos o comando ps -ef | grep, que nos mostra os processos abertos. Um outro comando útil para visualizarmos esses processos de uma maneira gráfica é o pstree. Com ele podemos ver quais processos estão em execução e dentro de quais programas esses processos estão executando. Veja por exemplo, que o Firefox está rodando dentro do bash (aba) no Terminal:

Firefox executando dentro do terminal bash

O processo do Firefox está em execução dentro do Terminal e, com isso, trava o bash no qual foi executado. Queremos que ele continue executando, mas no background desse bash, ou seja, sem travar o Terminal. Apertando CTRL + Z nós paramos temporariamente o processo.

processo do fireefox sendo pausado

E para visualizarmos os processos que estão parados, utilizamos o comando jobs:

processos pausados com o comando jobs: firefox

Para jogar o Firefox no background, ou seja, para ser executado em segundo plano, usamos o comando bg+ seu número de identificação, neste caso executamos bg 1 ou só bg se houver apenas um programa na lista de processos pausados. Este comando apresentará uma saída semelhante a listada abaixo:

[1]+ firefox &

E assim nosso bash fica destravado, mesmo executando o Firefox. A presença do & da saída anterior, significa que o programa está rodando no background. E se executarmos novamente o comando jobs, veremos algo como:

[1]+    Running             firefox &

Indicando que o Firefox está realmente executando em background. Mas e se quiséssemos fazer o contrário, ou seja, trazer a execução do processo para o foreground? Para trazermos o programa para o foreground fazemos fg 1 e assim, teremos nosso bash travado novamente.

Também podemos encerrar a execução do programa de vez, para isso basta que apertemos as teclas: CTRL + C.

Mas perceba que é um pouco trabalhoso jogarmos um programa para background: temos que abri-lo, fazê-lo parar e dar o comando necessário. Podemos fazer isso direto, ao abrirmos o programa da seguinte forma:

firefox &

Dessa forma já abrimos o programa em background e temos o terminal livre para continuarmos com demais comandos necessários para nossas atividades.

Nesta aula vimos os seguintes comandos:

Sobre o curso Linux II: Programas, processos e pacotes

O curso Linux II: Programas, processos e pacotes possui 55 minutos de vídeos, em um total de 56 atividades. Gostou? Conheça nossos outros cursos de Linux em Infraestrutura, ou leia nossos artigos de Infraestrutura.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Linux acessando integralmente esse e outros cursos, comece hoje!

  • 1120 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1120 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1120 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1120 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana