Tag: Linux

Live-restore do dockerd

Apesar de administrar ambiente docker há quase uma década, apenas recentemente descobri que dá pra manter os containers rodando durante um restart do docker daemon, que normalmente acontece após um upgrade por exemplo.

O nome desse recurso é live-restore. Inclusive ele restaura regras de firewall necessárias para acesso à rede do container.

Para ativar é assim:

cat >> /etc/docker/daemon.json <<EOF
{
"live-restore": true
}
EOF
systemctl reload docker

Ou então enviar um sinal SIGHUP (kill -1) ao processo do dockerd.

Mão na roda pra quando faz upgrade dos pacotes, e o docker reinicia o daemon pós-upgrade.
Antes fazia shutdown de todos os containers, mesmo os declarados com restart: always 🤦🏻‍♂️.
Agora não mais, melhorando assim a disponibilidade do serviço.

Por: Hudson Murilo dos Santos
Referências: https://docs.docker.com/config/containers/live-restore/

Monitorar silêncio ou atividade na janela do screen

Outra dica quente pra quem gosta do GNU screen. Pessoal que prefere tmux deve ter recurso similar também.

Às vezes estamos fazendo algum processo temporário mas que não pode parar. Por exemplo, durante esse período, algo vai ficar processando e gerando algum tipo de output de 10 em 10 segundos em algum /var/log/logfile.

Mas se ficar 30 segundos sem gerar output no log é problema e você gostaria de ser notificado a respeito disso.

É bem fácil de sinalizar isso com o GNU screen usando o monitoramento por silêncio na janela.

O atalho para ativá-lo é: C-a _ (ctrl+a+underline)

Esse monitoramento por silêncio vai avisar quando a janela ficou em silêncio por 30 segundos.

Daí um ‘tail -F’ no log desejado vai ficar recebendo os outputs de 10 em 10 segundos.. então o monitoramento não será acusado, mas se ficar 30 segundos em silêncio, ele acusa visualmente na janela na barra de status do screen.

👆🏼Fica com negrito e tarja preta como neste exemplo, janela 4

Existe também o monitoramento normal: C-a M
Este serve pra monitorar por atividade na janela que deveria estar silenciosa.

Enfim, as possibilidades de uso desses recursos são muitas. Depende da criatividade de cada sysadmin.

Por: Hudson Murilo dos Santos

Referências: https://wiki.archlinux.org/title/GNU_Screen
https://www.gnu.org/software/screen/manual/screen.html
https://wiki.archlinux.org/title/tmux

Costuma monitorar logs com tail?

Outra dica quente pro dia-a-dia de quem vive a linha de comando é sobre quando usar tail com parâmetro -F maiúsculo ao invés de -f minúsculo.

O maiúsculo é muito útil nos casos em que é necessário deixar um terminal aberto monitorando manualmente algum log aleatório por vários dias (após alguma mudança importante por exemplo), e esse log costuma ser rotacionado (logrotate.d) fazendo o tail perder acesso ao file descriptor desejado.

Daí o -F faz o mesmo que o -f mas tem o --retry junto pra orientar o tail a seguir tentando abrir aquele arquivo novamente se estiver inacessível.

Se o seu comando perdia acesso ao arquivo, agora não vai perder mais… 😊

#ficaadica

Entenda as permissões em sistemas *nix

Algumas pessoas já me pediram explicação sobre permissões no Linux, alegando que não entendem como dar permissão pelo terminal, e essas coisas.
Recentemente tive a oportunidade de explicar a um amigo, lá pelo discord do Mente Binária (http://menteb.in/discord), e então já fomos anotando as informações para montar um POST. Assim, o mesmo conteúdo poderá ser utilizado outras vezes, com outras pessoas.

Então aqui vai uma breve explicação inicial sobre permissões nos sistemas semelhantes à Linux..Vale para *nix na realidade.
A explicação que segue foi preparada com as minhas próprias palavras e uma maneira simples de tentar explicar algo que muitos acham complexo.

Sempre começo informando que permissão é fácil duma vez.. e digo: – “421 – grava esse número.”

Permissões se resumem à possibilidade ou não de Leitura, Escrita e Execução em arquivos ou diretórios.

Cada uma dessas possibilidades, é expressa por números com valores:

Leitura = 4
Escrita = 2
Execução = 1

Por isso a dica de memorizar o número 421.

Leitura em inglês é traduzido como Read
Escrita em inglês é traduzido como Write
Execução em inglês é traduzido como eXecute

Note as letras em destaque em Read/Write/eXecute: r w x

Por isso, quando se dá um comando “ls -l” com o objetivo de listar os arquivos e pastas no diretório atual, se vê algo parecido com:

-rwxrwx--- e outros detalhes como dono, grupo e nome do arquivo

Essas letrinhas aí significam o seguinte:

r significa que esse arquivo tem permissão de leitura (Read)
w significa que tem permissão de escrita (Write)
x significa que tem permissão de execução (eXeCution)

♥Daí surge a pergunta: mas por quê não apenas rwx e sim rwxrwxrwx? Parece que está repetindo. Não parece?
Talvez isso é o que confunde muita gente.

É que são três grupos: rwx pro dono do arquivo… rwx pro grupo do arquivo… e rwx pra outros (ou qualquer um, enfim tudo que não for dono e grupo)
Sempre começa com um traço, e depois os três grupos. Assim:

-[---][---][---] e outros detalhes como dono, grupo e nome do arquivo

Se contarmos quantos rwx tem, vai ver que, em condições básicas de permissão, serão sempre 9. Sendo 3 pra dono 3 pra grupo 3 pra outros.

Agora o 421 numericamente falando, são as permissões de usuários. Para manipular as permissões de um arquivo, usa-se uma matemática de simples soma com esses números.
Se temos um arquivo aaa.txt e queremos deixar sem permissão pra nada, o comando seria:

$ chmod 000 aaa.txt

Daí o “ls -l” mostraria algo do tipo:

---------- aaa.txt

Ou seja, o arquivo está sem permissão alguma. Nem o dono conseguirá ler o conteúdo do arquivo.

Agora, se quiser que o dono do arquivo tenha permissão de leitura, o comando seria:

$ chmod 400 aaa.txt

Daí o “ls -l” mostraria algo do tipo:

-r--------- aaa.txt

Até aqui, estamos aprendendo como manipular essas atribuições de permissões.
Lembrando que no comando chmod, os números passados como argumento se referem a permissão, mas a posição de cada algarismo se refere a dono, grupo e outros…
Por exemplo: agora queremos que só os outros tenham permissão de leitura, então o comando seria:

$ chmod 004 aaa.txt

Daí o “ls -l” mostraria algo do tipo:

-------r-- aaa.txt

Sacou a ideia?
Faça um desenho no papel e tudo fica mais claro.. e aproveite para ir testando num terminal também, claro.

Note que, nos comandos de exemplo de chmod que foram usados até aqui, falamos apenas de permissão de leitura, por isso só trabalhamos no número 4..

Leitura em inglês é Read = 4
Escrita em iinglês é Write = 2
Execucão em inglês é eXecute = 1

Então, pra todos (dono, grupo e outros) terem permissão de executar, o comando seria assim:

$ chmod 111 aaa.txt

Daí o “ls -l” mostraria algo do tipo:

---x--x--x aaa.txt

Ao executar o comando chmod seguido de algum número como argumento, são 3 posições:

$ chmod [][][] algum.arquivo.extensao

A primeira posição é usada para permissão de dono
A segunda posição é usada para permissão de grupo
A terceira posição é usada para permissão de outros (ou qualquer um, enfim tudo que não for dono e grupo)

Na primeira posição [] pode-se colocar ou 4 ou 2 ou 1.. para permissão de dono (ou leitura, ou escrita, ou execução)
Na segunda posição [] pode-se colocar ou 4 ou 2 ou 1.. para permissão de grupo (ou leitura, ou escrita, ou execução)
Na terceira posição [] pode-se colocar ou 4 ou 2 ou 1.. para permissão de outros (ou leitura, ou escrita, ou execução)

E pronto! Isso é o básico de permissão em *nix!

Vamos seguir com mais alguns exemplos para fixar bem o que aprendemos até aqui.
Um comando como esse:

$ chmod 421 aaa.txt

Deixaria o arquivo aaa.txt com as seguintes permissões:

-r---w---x aaa.txt

…pois com o número 421 estamos na realidade atribuindo três posições: [4][2][1]

4 para dono
2 para grupo
1 para outros

Agora um ponto bem importante:
Um arquivo totalmente aberto com todas as permissões para todo tipo de usuário é perigoso, praticamente público, mas o comando para fazer isso seria assim:

$ chmod 777 aaa.txt

Daí o “ls -l” mostraria algo do tipo:

-rwxrwxrwx aaa.txt

Usa-se o número 7 pois quero dar rwx (4+2+1) = 7

Note que temos uma soma matemática aí.

matemática 4+2+1=7 pra dono
matemática 4+2+1=7 pra grupo
matemática 4+2+1=7 pra outros

Ao passo que se compreende a soma, é possível montar a permissão que quiser. Por exemplo:

100 apenas o dono executa.
200 apenas o dono escreve.
300 apenas o dono escreve e executa (2+1=3).
400 apenas o dono lê.
500 apenas o dono lê e executa (4+1=5).
600 apenas o dono lê e escreve (4+2=6).
700 apenas o dono lê, escreve e executa (4+2+1=7).

010 apenas o grupo executa.
020 apenas o grupo escreve.
030 apenas o grupo escreve e executa (2+1=3).
040 apenas o grupo lê.
050 apenas o grupo lê e executa (4+1=5).
060 apenas o grupo lê e escreve (4+2=6).
070 apenas o grupo lê, escreve e executa (4+2+1=7).

001 apenas outros executa.
002 apenas outros escreve.
003 apenas outros escreve e executa (2+1=3).
004 apenas outros lê.
005 apenas outros lê e executa (4+1=5).
006 apenas outros lê e escreve (4+2=6).
007 apenas outros lê, escreve e executa (4+2+1=7).

E o segredo para nunca mais esquecer é praticar.

Veja esse diagrama:

Da autoria de Julia Evans (@b0rk) que é uma excelente professora. Como comentado por ela, existem mais opções avançadas de permissões, tais como setuid, setgid, sticky.
Ainda outra vertente seria a manipulação de permissões ainda usando o comando chmod mas usando as letras ao invés de números, tais como:

chmod +r aaa.txt
chmod +w aaa.txt
chmod +x aaa.txt

Onde se pode manipular permissões para dono, grupo e outros também.

Mas essas linhas ficam então para você pesquisar e continuar a aprender sobre permissões no Linux.

Espero que tenha gostado da explicação e aprendido algo.
E se surgirem dúvidas, poste um comentário aqui que respondo assim que eu puder, se eu souber.

Forte abraço e como sempre muito obrigado pela leitura!

eSpeak: O Linux também fala!

Pra quem costuma elogiar o Linux dizendo: “Só falta falar”.
Agora vai ter que mudar um pouco o discurso.

O Linux também fala!

Um dos nomes dessa tecnologia é text-to-speech (texto pra fala). Já faz algum tempo que essa tecnologia vem evoluindo. Ótimo recurso para quem desenvolve aos portadores de necessidades especiais, como os deficientes visuais, por exemplo.

Mas ainda ainda tem muito o que evoluir. Não está pronta para ser usada na narração de um vídeo institucional por exemplo, para evitar gastos com um estúdio de gravação profissional (que não é nada barato).

Pra explorar text-to-speech em Linux, basta instalar o espeak e se divertir:

[root@vostrolab ~]# yum install espeak

O que eu tenho instalado aqui por exemplo, é esse:

[root@vostrolab ~]# rpm -qa|grep espeak
espeak-1.46.02-1.fc16.i686

Agora é só mandar falar:

[hudson@vostrolab ~]$ espeak -v pt “CiaLinux, compartilhando o que é livre.”

Perceba que usei o parâmetro opcional -v pt, para determinar a voz que me interessa.

Para verificar as vozes disponíveis:

[hudson@vostrolab ~]$ espeak –voices

A título de curiosidade, essas vozes ficam indexadas em /usr/share/espeak-data/voices/ e demais dicionários junto em /usr/share/espeak-data/.

O que segue é informação adicional:
eSpeak  was  written  by  Jonathan  Duddington  <jonsd@jsd.clara.co.uk>.  The  webpage  for  this  package  can  be  found  at http://espeak.sourceforge.net/.

Por: Hudson Murilo dos Santos
Referências: man espeak
http://elcio.com.br/o-linux-tambem-fala/

Arquivos deletados e espaço em disco não liberado

Olá pessoal, vamos para mais uma dica sobre File Systems…

Alguém já presenciou uma situação em que um grande arquivo ou milhares de pequenos arquivos foram eliminados com rm -rf e o espaço em disco não foi liberado ? pois bem, eu já presenciei várias vezes em FileServers Samba e hosts com bancos de dados Oracle.

Trata-se de uma situação comum que dependendo da situação pode ser uma dor de cabeça e tanto. Quando temos um arquivo sendo usado por um processo de aplicativo, e que durante este “lock” o removemos o filesystem marca este arquivo como deletado e não libera os blocos usados pelo(s) arquivo(s)…

Read More