Como matar programas no Linux

Da série de comandos tradicionais do universo Linux e Unix, o comando kill permite interromper processos arbitrariamente.
Uma definição simplificada de processo é de que se trata de um programa ou uma tarefa em execução
É um sistema UNIX! Eu conheço isto! Kill
Ao iniciar, cada processo recebe uma identificação numérica única, atribuída pelo sistema — chama-se PID, Process IDentification.
Para “matar” um programa em execução, você precisa saber o PID dele (no final do artigo, vou mostrar como matar um processo sem saber seu PID).

POSTS RELACIONADOS

A sintaxe do comando kill

Apesar do nome, o comando kill serve para muito mais do que apenas matar processos.
Sua função é enviar sinais para processos e alguns destes não tem absolutamente qualquer coisa a ver com “morte”.
Sua execução segue, portanto, a seguinte forma:


kill -s SINAL PID

Nos exemplos, abaixo, vou mostrar outras formas de usar o comando.

Como encontrar o PID de um processo específico

O comando ps aux pode mostrar uma lista bem extensa de processos em execução, o que pode dificultar a busca.
É aqui que entra o comando grep, um velho conhecido da gente.
Para exemplificar, vou rodar o ftp em background (&) e determinar o seu PID com o grep em conjunto com o ps:


ftp &

[1] 2983

ps aux | grep ftp

proftpd   1242  0.0  0.1  11996  2172 ?        Ss   10:01   0:00 proftpd: (accepting connections)              
1000      2983  0.0  0.0   5212  1012 pts/5    T    11:51   0:00 ftp
1000      2985  0.0  0.0   4724   836 pts/5    S+   11:51   0:00 grep --color=auto ftp
[1]+  Parado                  ftp

Neste exemplo, o programa ftp tem o PID 2983. No seu sistema o PID será diferente. Verifique.

O comando kill, em exemplos

Uma vez que você já sabe como determinar o PID dos processos, já pode entender como usar esta informação em conjunto com o kill.
Há dois sinais básicos para indicar que se deseja interromper a execução de um processo:

  • SIGTERM(15) — que requisita educadamente a interrupção de um processo. Cabe a este aceitar ou ignorar o sinal. Se aceitar, ele finaliza sua própria execução, graciosamente e gravando o que precisa ser gravado. Há um sinal semelhante a ele, chamado SIGINT. Cada sinal atende por um número. O do SIGTERM é 15.
  • SIGKILL(9) — envia uma requisição ao processo para que este seja terminado imediatamente. Ele não pode ser ignorado e é sequer analisado pelo processo, que é interrompido incontinenti. O número deste sinal é 9.

Vamos ver como aplicá-los:
Podemos enviar um SIGTERM ao processo 2983, de 4 formas diferentes:


kill 2983
kill -s TERM 2983
kill -TERM 2983

ou indicando o número do sinal:


kill -15 2983

Para enviar um SIGKILL, use uma destas 3 opções:


kill -9 2983
kill -s KILL 2983
kill -KILL 2983

Espero ter deixado claro, como terminar um processo via terminal, no Linux. O ambiente gráfico tem um comando similar, chamado xkill, do qual falaremos em outro artigo.

POSTS RELACIONADOS

Como finalizar um programa sem conhecer o seu PID

Há casos em que um processo abre vários outros processos – em que um programa abre várias outras instâncias de si mesmo. Quando o usuário dá um ps no sistema, vê uma quantidade muito grande de PIDs para fechar.
Veja a figura, abaixo, onde se pode ver uma certa quantidade de processos do chromium-browser abertos.
comando ps aux linux
É possível fechá-los todos com o killall. Veja como:


killall chromium-browser

Você pode repassar o número de um sinal para o comando, assim:


killall -9 chromium-browser

Fácil, não é?

5 exemplos do comando shutdown no Linux

O comando shutdown, pra ser curto, desliga o seu sistema. Mas ele pode fazer isto de maneiras “diferenciadas”, se você conhecer algumas de suas opções.
Uma das minhas formas preferidas de usar o comando shutdown é a que permite programar o desligamento ou o reboot do meu sistema.
Em alguns casos, um administrador precisa programar um reinício — na maioria das vezes para aplicar certos updates no sistema. É coisa rara. Poucas atualizações no Linux precisam que a máquina seja reiniciada. Na maioria das vezes, apenas o serviço ou o daemon a que ela se refere é que precisa ser reiniciado.
Na maioria dos casos, as pessoas desejam programar o desligamento, por que vão sair e não querem deixar a máquina ligada durante sua ausência – mas também não querem interromper um download ou alguma outra tarefa que esteja sendo executada. A solução para isto é programar o shutdown para ser executado alguns minutos após o término previsto da tarefa em questão.

O que acontece ao executar o comando shutdown

Ao rodar o comando shutdown, o sistema é desligado de forma segura e todos os usuários (no terminal) são avisados. Além disso, poucos minutos antes de desligar, o sistema não recebe mais conexões novas.
Sim. Você precisa ter privilégios administrativos para desligar um servidor. Ainda mais, se quiser fazer isto remotamente.

Exemplos de uso do comando shutdown no Linux

Veja como reiniciar a máquina, com o comando shutdown:

sudo shutdown -r now

ou para desligar, mesmo:

sudo shutdown -h now

Você pode apenas avisar os usuários que o sistema será desligado e impedir novas autenticações no sistema, com a opção code>-k:

sudo shutdown -k now

Com o uso de -k o sistema não será desligado de verdade.
Se você quiser, pode programar o desligamento ou reinício do sistema. No exemplo, a seguir, vou programar a máquina para desligar em 30 minutos:

sudo shutdown -h 30

Esta é a mensagem que outros usuários irão receber em seus terminais:

Espalhar mensagem de justincase@JustInCase-Solaris-8
	(/dev/pts/5) em 1:04 ...

The system is going down for halt in 30 minutes!

Neste caso, o shutdown pode ser cancelado com o pressionamento das teclas Ctrl + C.
Um outro usuário, com privilégios administrativos, também pode cancelar o processo, de seu terminal, com o seguinte comando:

sudo shutdown -c

Para enviar uma mensagem aos usuários afetados pelo desligamento, use o comando desta forma:

sudo shutdown -r 30 "O sistema será reiniciado para aplicação de atualizações. Aproveite pra tomar um café."

Este seria o resultado de tal comando:

Espalhar mensagem de justincase@JustInCase-Solaris-8
	(/dev/pts/5) em 1:13 ...

The system is going down for reboot in 30 minutes!
O sistema será reiniciado para aplicação de atualizações. Aproveite pra tomar um café.

Use o shutdown para fazer duelos

Quando o chefe não estiver por perto, a brincadeira consiste em acessar a máquina do outro colega (via telnet ou SSH) e aplicar-lhe um shutdown antes que ele(a) o faça com você. Quem for mais rápido, vence.
Divirta-se!

Comando apropos ajuda a lembrar nomes de outros comandos no Linux

O apropos faz uma busca nas páginas do manual do Linux pelos termos que o usuário “perguntou” – e mostra os comandos relacionados àquela pesquisa.
Desenvolvido por Wilford, Polacco e Watson, o apropos lê a introdução a cada comando descrito no manual do Linux, buscando por palavras-chave que você definiu na linha de comando.
Assim, você pode encontrar um comando, cujo nome não sabe ou não se lembra mais, procurando pelo que “ele faz”.
Vamos aos exemplos?

Exemplos do comando apropos

Se você quiser encontrar os comandos, no Linux, que tratam imagens, pode usar o apropos desta forma:

apropos image
acetoneiso (1)       - feature-rich graphical application to mount and manage CD/DVD images
carousel (6x)        - displays multiple images rotating in a circular formation
cjpeg (1)            - compress an image file to a JPEG file
cwebp (1)            - compress an image file to a WebP file
devdump (1)          - Utility programs for dumping and verifying iso9660 images.
djpeg (1)            - decompress a JPEG file to an image file
dwebp (1)            - decompress a WebP file to an image file
e2image (8)          - Save critical ext2/ext3/ext4 filesystem metadata to a file

Acima, há um resultado parcial, em que são exibidos comandos e funções relacionados à palavra “image”.
Contudo, nem todos os itens listados, tratam de imagens gráficas. Alguns tratam de imagens de disco, que é uma coisa totalmente diferente.
Se você se refere a imagens gráficas, de um determinado tipo, pode ser um pouco mais específico:

apropos jpeg
cjpeg (1)            - compress an image file to a JPEG file
djpeg (1)            - decompress a JPEG file to an image file
jpegexiforient (1)   - reads or writes the Exif Orientation Tag
jpegtran (1)         - lossless transformation of JPEG files
pdftocairo (1)       - Portable Document Format (PDF) to PNG/JPEG/TIFF/PDF/PS/EPS/SVG using cairo
rdjpgcom (1)         - display text comments from a JPEG file
wrjpgcom (1)         - insert text comments into a JPEG file

Ou, ainda, pode acrescentar o comando grep, para filtrar resultados:

apropos image | grep -i jpeg

apropos grep image
clique para ampliar

Em outros casos, o comando less, pode ser mais adequado:

apropos editor | less
atobm (1)            - bitmap editor and converter utilities for the X Win...
audacity (1)         - Graphical cross-platform audio editor
bitmap (1)           - bitmap editor and converter utilities for the X Win...
bmtoa (1)            - bitmap editor and converter utilities for the X Win...
easytag (1)          - Tag editor for MP3 and Ogg Vorbis files
ed (1)               - line-oriented text editor
editor (1)           - Vi IMproved, a programmers text editor
editres (1)          - a dynamic resource editor for X Toolkit applications
ex (1)               - Vi IMproved, a programmers text editor
id3tool (1)          - a command line editor for id3 tags.
:

Espero que este texto o ajude a explorar cada vez mais o Linux e seus inúmeros comandos.

Como testar a velocidade da Internet na linha de comando

Você pode usar o speedtest-cli para testar a velocidade da conexão em um servidor. Trata-se de uma ferramenta de linha de comando (por isto, é leve) para testar a largura de banda da sua conexão à Internet.
Para fazer os testes, o speedtest-cli usa as informações providas pelo site speedtest.net e evita o uso de uma interface gráfica, feita em flash… e pesada.

Instale o speedtest-cli

Para instalar o cliente do speedtest.net, é necessário ter o python-pip, primeiro.

SAIBA MAIS

« pip é um sistema de gerenciamento de pacotes usado para instalar e gerenciar pacotes de software escritos na linguagem de programação Python. Muitos pacotes podem ser encontrados no Python Package Index (PyPI) » Fonte: Wikipedia.

Instale o pip, assim (no Ubuntu):

sudo apt-get install python-pip

Depois, fica fácil instalar o software, que é o assunto deste post:

sudo pip install speedtest-cli

Está feito!

Como usar o speedtest-cli

Para testar a sua conexão à Internet, execute o comando:

speedtest-cli
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Oi Velox (187.79.164.175)...
Selecting best server based on ping...
Hosted by Mob Telecom (Fortaleza) [69.61 km]: 740.387 ms
Testing download speed..................
Download: 13.62 Mbit/s
Testing upload speed..................................................
Upload: 10.38 Mbit/s

Após algum tempo, surge o resultado, para você analisar.
Pronto para brigar com a operadora?

Compartilhe os seus resultados

Com a opção --share, o seu resultado é transformado em uma imagem .png e enviado pro site do speedtest, de onde você a pode compartilhar. Veja como fazer isto:

speedtest --share
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from Oi Velox (187.79.164.175)...
Selecting best server based on ping...
Hosted by Mob Telecom (Fortaleza) [69.61 km]: 66.678 ms
Testing download speed........................................
Download: 3.52 Mbit/s
Testing upload speed..................................................
Upload: 0.42 Mbit/s
Share results: http://www.speedtest.net/result/3314997743.png

Veja que, na última linha, é exibida a URL para ver o resultado do teste na Internet. No meu caso, deu isto aqui: http://www.speedtest.net/result/3314997743.png
Ah, sim! Você pode usar apenas speedtest no lugar de speedtest-cli – no caso de você ter instalado o utilitário através do Python Pip.
como medir a velocidade da minha conexão à Internet
Simples, não?
Agora, experimente e compartilhe (este texto e seus resultados) com os seus amigos.