Obtenha frases aleatórias e divertidas no terminal do Linux

Se hackers gostam de usar a linha de comando (CLI), consistindo de um terminal com fundo escuro, também gostam de se divertir durante o uso.
O ‘fortune’ é uma das longas tradições do universo UNIX. Se você ainda não a conhece, ainda tá em tempo.

Consiste em um pequeno programa, acompanhado de um banco de dados de frases e sentenças.
As frases podem ser engraçadas ou podem exibir curtas dicas de uso do sistema operacional.
Estão disponíveis em vários idiomas, incluindo o português.
Instale o fortune, usando o seu gestor de pacotes favorito (yum, dnf, apt etc).
No Debian/Ubuntu, use o apt:


sudo apt install fortune

Uma vez instalado, já pode ser executado no terminal:


fortune

    "The glory of creation is in its infinite diversity."
    "And in the way our differences combine to create meaning and beauty."
        -- Dr. Miranda Jones and Spock, "Is There in Truth No Beauty?",
           stardate 5630.8

Acima, diálogo retirado da série Star Trek (1968).
Star Trek

Como controlar ou escolher as frases do fortune

Se quiser ver mais frases relacionadas ou contendo a string “Star Trek”, use a opção -m:


fortune -m "Star Trek"

Prefere o Doctor Who!?


fortune -m "Doctor Who"

Fique atento para a caixa (maiúsculas/minúsculas) das palavras procuradas. O Fortune é sensível à caixa.

Como obter frases ofensivas no terminal

As frases ofensivas são parte da tradição e da brincadeira.

Aviso: Por favor, só ligue esta opção se você estiver querendo, do fundo do seu coração, ser ofendido(a).

Na maioria das distribuições, contudo, o banco de dados de frases ofensivas não é instalado.
É necessário fazer a instalação manual, se quiser:


sudo apt install fortunes-off

Agora é só executar, com a opção ‘-o’:


fortune -o

Obtenha dicas de uso do Linux

Para ver frases mais construtivas (com dicas de uso do Debian, por exemplo), instale o pacote Debian Hints:


sudo apt install fortunes-debian-hints

E rode o programa:


fortune debian

ou


fortune debian-hints

Como obter a versão em português

Para ver frases selecionadas em português, é necessário instalar o arquivo fortunes-br:


sudo apt install fortunes-br

e rodar o programa assim:


fortune brasil

Como configurar para mostrar uma “fortuna” toda vez que abre um terminal

Este é o jeito que eu gosto de usar o fortune: com uma frase a cada vez que abro um terminal.
fortune quincas borba
Para isto, inclua o comando ‘fortune’, da maneira que achar melhor a sua execução, ao final do arquivo ~/.bashrc.

Como obter o efeito Matrix no seu terminal

No filme (agora, um clássico) de aventura e ficção científica, Matrix, lançado no fim dos anos 90 e dirigido pelas irmãs Wachowski, em alguns momentos, a realidade virtual ou o código da “matriz” é representado por uma chuva de caracteres em verde.
A cor verde é uma alusão aos antigos monitores em fósforo verde, muito populares entre as décadas de 60 a 80.

Se você não acha divertido trabalhar na linha de comando (CLI), provavelmente está fazendo isso errado.

Use o gerenciador de pacotes da sua distro para instalar o cmatrix.
No Debian/Ubuntu, use o apt:


sudo apt install cmatrix

Uma vez instalado, é possível rodar o programa apenas digitando ‘cmatrix’ dentro do terminal.
Mas o melhor é fazer uso de algumas opções que ele oferece na linha de comando.
Eu gosto de usar assim:


cmatrix -nu 6 -C blue

Deixa eu explicar o comando:

  • A opção ‘-n’, desliga as letras em negrito, o que confere um visual mais suave e homogêneo (em minha humilde opinião).
  • ‘-u 6’ ajusta a velocidade da cascata de letras para 6. Você pode usar outro valor, de 0 a 10.
  • ‘-C blue’ ajusta a cor principal para azul.

cmatrix matrix linux

Use o meu exemplo para obter diferentes efeitos.

Comandos do cmatrix

Durante a execução do programa, é possível alterar o seu comportamento, pressionando as seguintes teclas:

  • a, para ligar/desligar a rolagem assíncrona.
  • b, B ou n, para alternar o efeito negrito sobre as letras.
  • 0 a 9, para alterar a velocidade da rolagem.
  • q, para sair.

Segue a relação de cores possíveis, com a tecla de comando de cada uma:

  1. @ green (verde), é a cor padrão.
  2. ! red (vermelho).
  3. $ blue (azul).
  4. & white (branco).
  5. # yellow (amarelo).
  6. ^ cyan (ciano).
  7. % magenta.
  8. ) black (preto).

Experimente ler a ajuda do programa, para obter mais informações sobre sua execução:


cmatrix -h

Por fim, fica o aviso de que o cmatrix consome bastante recursos do sistema. Portanto, não se assuste com este “detalhe”.

Como gravar arquivos criptografados com o Vim

O editor de textos Vim tem suporte a diversos métodos de criptografia.
É possível guardar código ou qualquer outro texto (como senhas ou outras informações sensíveis) longe de olhares curiosos.

Uma vez criptografado, o texto não pode mais ser lido, sem a chave correta.
Tenha isto em mente, antes de usar este tipo de segurança em um arquivo — pra não ficar “trancado do lado de fora”.
Você pode enviar o texto codificado para outras pessoas, que usem o Vim no Windows ou no MacOS.
Se elas tiverem a senha para descriptografar, poderão ler o conteúdo da mensagem.

Para ativar a criptografia, a qualquer momento, use o comando ‘:X’.
Forneça a senha e a confirmação.
A criptografia será aplicada na hora de gravar o arquivo (:w).

criptografia no vim

É possível já abrir um arquivo com a criptografia ativada:

vim -x meu-arquivo-secreto.txt

Após este comando, o Vim iniciará pedindo uma nova chave de segurança para o seu arquivo.
Na próxima vez em que for abrir o arquivo, não precisa usar ‘-x’:

vim meu-arquivo-secreto.txt

Cuidados com a segurança criptográfica no Vim

Além de não perder a sua senha e usar, também, uma senha decente, há outros aspectos a levar em consideração, caso você se preocupe realmente com a sua segurança.
Quando tentar abrir o seu arquivo, só conseguirá ver um monte de caracteres desconexos.
texto criptografado

Tanto o texto contido no swap, quanto o do arquivo undo (usado para desfazer ações dentro do editor), são guardados sob criptografia.

Talvez não seja paranoia, mas a gente tem que falar sobre isso…
A codificação dos arquivos de swap e do undo são feitas bloco a bloco — fator que pode ajudar a reduzir o tempo necessário para um invasor quebrar sua senha.
Portanto, se quiser segurança extra, desative o swap e o undo (desfazer) para o arquivo.
Para desativar o recurso de swapping do Vim, entre no modo de comando (tecla ESC) e execute o seguinte:

:noswapfile

O comando abaixo, inicia a edição do arquivo ‘meus_segredos.txt’, com o swap desativado:

:noswapfile edit meus_segredos

Use o que achar melhor.
O lado ruim desta ação é que você pode perder texto, que ainda não tenha sido gravado, caso ocorra alguma queda de energia ou travamento no sistema operacional.
Já o arquivo undo pode ser desativado sem maiores problemas:

:set noundofile

Veja outros procedimentos adicionais (opcionais) de segurança que você pode adotar.
Para desativar também o backup automático:

:set nobackup

Para desativar o arquivo temporário:

:set nowritebackup

Para desativar a criptografia de um arquivo use o comando:

:set key=

Você também pode desativar o viminfo, que oferece informações sobre a sessão atual:

:set viminfo=

Quais métodos de criptografia estão disponíveis para o Vim

Você pode usar a opção ‘cryptmethod‘ (ou cm) para selecionar o tipo de criptografia a ser usado:

  1. zip: método mais fraco, porém rápido e mais difundido. Tem maior compatibilidade.
  2. blowfish: método mais seguro que o anterior.
  3. blowfish2: método atualizado e com segurança média para forte. É recomendado pela documentação oficial do Vim.

Para escolher o método de criptografia blowfish2, use o seguinte comando no Vim:

:setlocal cm=blowfish2

Você precisa fazer esta opção antes de começar a escrever no arquivo.
Quando você for abrir um arquivo, o Vim detecta automaticamente o método usado para criptografá-lo.
Você pode alterar o cryptmethod, ao abrir um arquivo, antes de começar editar.
Para definir permanentemente o método ou qualquer outro ajuste de que falamos neste post, edite o arquivo de configuração vimrc.

Como saber se a minha versão do Vim tem suporte a criptografia

Se você efetuou a instalação do aplicativo a partir dos repositórios oficiais da sua distro, não há muito o que fazer. E o suporte provavelmente já estará lá.
Alguns usuários preferem baixar e compilar o código fonte — entre outras coisas, isto lhes dá acesso a uma versão mais atual do aplicativo.
Neste caso, pode ser necessário compilar com a opção ‘cryptv’ selecionada.
Use a opção ‘–version’, combinada ao comando grep, para saber se a sua versão tem suporte a criptografia:


vim --version | grep crypt

Se o +cryptv estiver presente, então está tudo ok com a sua versão.

vim version

Referências

Como considerações finais, tenha cuidado para não começar a editar (e gravar em seguida) um arquivo criptografado, que você não descodificou adequadamente. Todo o conteúdo do arquivo será perdido, caso você o faça.
Lembre-se que o texto armazenado na memória não é criptografado.
Isto significa que o administrador do seu sistema, tecnicamente, poderá ler o seu conteúdo, enquanto você o estiver editando.
O manual do Vim também informa que, em uma máquina antiga (32 bit) é possível quebrar uma senha de 6 caracteres em menos de 1 dia, por força bruta, no caso de usar o cryptmethod zip.
Você pode iniciar o Vim com criptografia ativada e o swap desligado, com as seguintes opções:


vim -xn meuarquivo.txt

Leia mais:
https://linux-audit.com/using-encrypted-documents-with-vim/.

Como lidar com um processo zumbi no Linux

De forma bem simplificada (ou em termos leigos), processo zumbi é aquele que ainda pode ser visto na tabela de processos, mesmo que já tenha sido finalizado.
Processos nestas condições também são chamados “defuntos” (ou defunct).

Para entender como os zumbis são criados, é necessário compreender como os processos são retirados do espaço da memória do sistema, após serem finalizados
Apesar da coincidência de temas, não há nada de macabro neste post.
Sob o ponto de vista técnico, a presença de zumbis no seu sistema é uma realidade, provavelmente, constante — e normalmente não é preocupante.

Como os zumbis aparecem

A cada vez que um processo completa seu ciclo e termina sua execução com sucesso, ele desocupa a memória e avisa que “morreu” ao processo que lhe deu origem (processo pai).
Neste momento, o pai deve executar uma chamada de sistema (system call) WAIT, que faz a leitura do estado do filho morto.
Quando o WAIT termina de ser executado, o cadáver é removido da memória — e a vida segue.
O problema aparece quando há defeitos no código do processo pai ou, por alguma razão, este é incapaz de ler o estado do processo filho.
Neste caso, a chamada de sistema pode simplesmente não ocorrer.
Como consequência, o cadáver não é removido, permanece na memória e continua aparecendo na tabela de processos.
Toda esta operação, descrita acima, é muito rápida.
Os zumbis são previstos pelo Linux.
São inócuos e, na maioria das vezes, nem são notados.
Muitos tem PID 1 como pai, que é o próprio init.
O init executa um processo de limpeza periódica que acaba por remover naturalmente os zumbis do sistema.
Por isto, é seguro dizer que não há com que se preocupar.

Como encontrar zumbis no Linux

Use o comando ps para checar o seu sistema:


ps axu | grep Z

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
justinc+  1920  0.0  0.0      0     0 tty2     Z+   nov07   0:00 [single] 
justinc+ 20324  0.0  0.0  12792   932 pts/1    S+   17:57   0:00 grep --color=auto Z

Observe a coluna STAT, que informa o estado de cada processo listado.
A letra Z indica quando um processo está em estado zombie.

How to find zombies

Como matar zumbis

Você não pode matar o que já está morto!

Não é possível terminar processos zumbis. Eles já estão finalizados.
Se a situação te preocupa, é possível informar ao processo pai que “sua criança” está morta — para que rodem a chamada de sistema WAIT.
Use o comando pstree para descobrir qual é o PID do processo pai.
Em seguida, é possivel enviar o sinal SIGCHLD para o PID do pai:

kill -s SIGCHLD ppid

Acima, substitua ppid pelo número do PID do processo pai.

Impacto da presença de processos zumbis no sistema

Como já foi dito, ocupam pouco espaço e sua presença, em geral, é inofensiva e sequer chega a ser percebida.
Mas há casos em que a quantidade de zumbis continua a crescer — às vezes rapidamente. Aí, sim, temos um problema.
Como consequencia da multiplicação dos zumbis, podemos nos deparar com 2 stuações desagradáveis:

  1. Cada zumbi mantem seu PID enquanto cria novos processos, com novos PIDs.
    Depois de um tempo, as possibilidades de criar novos PIDs sao exauridas pelo kernel do sistema.
  2. Mesmo que cada zumbi ocupe apenas uma quantidade muito pequena de memoria, um numero muito grande deles pode fazer a diferença e causar a lentidao ou, mesmo, o travamento do sistema.

Você pode agir individualmente em relação a cada zumbi… ou não.
Pode ser legal mostrar aos seus amigos que você tem uma ou outra “criatura” destas habitando o seu sistema, temporariamente.
É possível que o seu amigo também tenha…
Só uma rápida e crescente multiplicação deles é que irá exigir uma medida mais drástica: reboot, para limpar o sistema.

Explicando o load average no Linux

A expressão load average(s), numa tradução livre, quer dizer média(s) de carga (de trabalho).
No universo UNIX/Linux, é uma expressão recorrente e, talvez, pouco compreendida

Se você usar a caixa de busca deste site, vai encontrar alguns artigos que fazem menção a load average (ou LA), além de ferramentas que lidam com estas variáveis.
O assunto pode ter alguma complexidade, mas espero conseguir facilitar sua compreensão neste artigo.
As variáveis de LAs usualmente são exibidas em trio (LALALA). 😉
A maneira mais simples de acessar estes números é através do comando uptime:


uptime

 09:04:33 up 1 day, 23:32,  1 user, 
load average: 0,72, 0,67, 0,64

Você pode também usar o comando top, para obter estes valores.

top load average
Em destaque, no topo, à direita, os valores do load average.
Clique na imagem, para ver detalhes.

Como a maioria dos meus posts, este surgiu da minha parcial ignorância sobre o assunto.
Depois de pesquisar um pouco, vim compartilhar o que aprendi com meus leitores.
Os sites pesquisados, como sempre, estão na sessão de referências, para quem quiser se aprofundar um pouco mais.

Resumidamente, trata-se da média total do número de processos em espera na lista de execução (run-queue) somado ao número de processos atualmente em execução, dentro do último período de 1, 5 e 15 minutos.

A definição, destacada acima, é bastante razoável, mas a fórmula para chegar lá é um pouco mais complicada.
Vamos entender qual o significado disto no seu sistema.
Vamos usar o resultado abaixo como exemplo:

load average: 0,72, 0,67, 0,64

Neste exemplo, vemos que o valor de 1 minuto é 0,72; 5 minutos, 0,67 e 15 minutos, 0,64.
Podemos tirar algumas conclusões disto:

  • Em média, no último minuto, havia 0,72 processos rodando ou esperando por recursos do sistema.
  • Há uma crescente demanda por recursos, aqui, uma vez que os valores aumentam (da direita para a esquerda) desde os últimos 15 minutos para o último minuto — de 0,64 para 0,72.
  • Este sistema está ocioso, embora seja necessário observar outras variáveis do sistema antes de concluir tal coisa.

Os load averages do sistema são as médias do número de processos que estão ou em estado de execução ou de ininterrupção.
Os primeiros, ou estão usando a CPU ou esperando para usá-la.
Os outros estão esperando por acesso E/S (gravar informações em disco, por exemplo).
As médias são obtidas dos 3 intervalos de tempo.

É importante mencionar que o load average não trata especificamente de número de processos em execução.
Ele trata também de processos na fila de espera para usar a CPU, ler dados no disco, enviar informações pela rede etc.
O que dá para saber é que um sistema com um load average significantemente mais alto do que o número de CPUs, está provavelmente muito ocupado ou travado em um gargalo.
Por outro lado, um sistema que tenha um LA significantemente mais baixo que o número de CPUs disponíveis, está provavelmente ok e rodando bem.
Como estão as coisas no seu sistema?

Os números são normalizados para a quantidade de CPUs no sistema.
Por isto, o valor 1 significa que um única CPU estava carregada — enquanto que em um sistema com 4 CPUs, o valor significa que este estava ocioso 75% do tempo.

Referências

https://pt.wikipedia.org/wiki/Load_average.

https://serverfault.com/questions/328260/what-is-the-closest-equivalent-of-load-average-in-windows-available-via-wmi

https://stackoverflow.com/questions/21617500/understanding-load-average-vs-cpu-usage.

http://www.teamquest.com/import/pdfs/whitepaper/ldavg1.pdf.

http://www.lifeaftercoffee.com/2006/03/13/unix-load-averages-explained/.