Pular para conteúdo

Linux no dia a dia

Guia para quem está aprendendo a mexer no servidor. Os exemplos são os comandos que você realmente usa no Braggo.

Regras de ouro

  1. Entenda o comando antes de rodar. Se não sabe o que faz, pergunte ou use man comando (sai com q).
  2. Teste antes de aplicar. sudo nginx -t antes de recarregar o Nginx, sudo sshd -t antes de reiniciar o SSH.
  3. Cuidado com rm -rf. Apaga sem perguntar e sem lixeira. Confira o caminho duas vezes.
  4. Snapshot antes de mudança grande, e lembre: snapshot não é backup (veja Backup do banco).
  5. Quando algo quebrar, leia o log primeiro, só depois mude coisas.

Onde estou e o que tem aqui

Comando O que faz
pwd mostra a pasta atual
ls -lah lista arquivos com detalhes, tamanho legível e ocultos
cd /opt/braggo entra em uma pasta (cd .. sobe, cd ~ vai para a sua pasta)
cat arquivo mostra o arquivo inteiro
less arquivo mostra paginado (setas, /texto busca, q sai)
tail -n 50 arquivo últimas 50 linhas
tail -f arquivo acompanha novas linhas ao vivo (Ctrl+C sai)
grep -i "erro" arquivo procura um texto no arquivo
nano arquivo editor simples (Ctrl+O salva, Ctrl+X sai)

Permissões (o ls -l)

-rw-r--r-- 1 root root 1234 Oct 25 14:00 arquivo
drwx------ 2 root root 4096 Oct 25 14:00 pasta

O primeiro bloco são 10 caracteres:

  • 1º: - arquivo, d pasta.
  • Depois três grupos de três: dono, grupo, todos os outros. Em cada um: r ler, w escrever, x executar (ou entrar na pasta).

Os números do chmod somam: r=4, w=2, x=1.

Modo Significa Onde usamos
700 só o dono faz tudo /var/backups/braggo
600 só o dono lê e escreve /etc/braggo-api.env
644 dono escreve, todos leem /etc/cron.d/braggo-backup
755 / 750 dono tudo, outros só leem/entram (750: só o grupo) pastas e scripts

chown dono:grupo caminho troca o dono. sudo roda o comando como administrador (root).

Serviços (systemd)

O Braggo roda como serviços: postgresql, braggo-api, nginx, cloudflared.

Comando O que faz
systemctl is-active postgresql braggo-api nginx cloudflared confere os quatro de uma vez
sudo systemctl status braggo-api situação detalhada e últimas linhas
sudo systemctl restart braggo-api reinicia
sudo systemctl stop braggo-api / start para / inicia
sudo systemctl enable braggo-api passa a iniciar com a VM
sudo systemctl daemon-reload relê arquivos .service depois de editar
sudo systemctl cat braggo-api mostra o arquivo do serviço

Logs (journalctl)

Comando O que faz
sudo journalctl -u braggo-api -n 100 --no-pager últimas 100 linhas
sudo journalctl -u braggo-api -f ao vivo
sudo journalctl -u braggo-api --since "1 hour ago" última hora
sudo journalctl -u braggo-api -p err só erros
sudo tail -n 50 /var/log/nginx/error.log erros do Nginx
sudo tail /var/log/braggo-backup.log resultado dos backups

Rede

Comando O que faz
ip -br a IPs da VM
ip -br link MAC das placas
sudo ss -tlnp quem escuta em qual porta
curl -I http://localhost/ testa só o cabeçalho de uma URL
curl -i http://127.0.0.1:5000/api/ROTA testa a API direto, sem o Nginx
sudo ufw status verbose regras do firewall

Leia o ss: 127.0.0.1:5432 = só local (bom). 0.0.0.0:5432 = aberto para a rede (ruim para banco).

Disco, memória e processos

Comando O que faz
df -h espaço livre por disco
du -sh /var/backups/braggo tamanho de uma pasta
free -h memória
top (ou htop) processos ao vivo (q sai)
uptime há quanto tempo a VM está ligada

Pacotes

sudo apt update              # atualiza a lista de pacotes disponíveis
sudo apt upgrade -y          # instala as versões novas
sudo apt install -y nome     # instala um pacote
sudo reboot                  # reinicia a VM

Copiar arquivos

scp arquivo.tar.gz servidor:/tmp/          # PC → VM
scp servidor:/tmp/arquivo.txt .            # VM → PC (para a pasta atual)

Ler comandos com símbolos

Símbolo Significa
barra vertical (pipe) passa a saída de um comando para o próximo, como em ls -l seguido de head
> grava a saída em um arquivo, apagando o que tinha
>> acrescenta ao arquivo
2>&1 manda também as mensagens de erro para o mesmo lugar
$(comando) usa o resultado de um comando dentro de outro
sudo tee -a arquivo acrescenta em um arquivo protegido (o >> com sudo não funciona, porque o redirecionamento roda sem sudo)
<<'EOF' ... EOF bloco de várias linhas enviado como texto ao comando (o > no começo das linhas que aparece ao colar é só o terminal esperando o fim do bloco)

Cron (tarefas agendadas)

Linha de /etc/cron.d:

minuto hora dia-do-mês mês dia-da-semana usuário comando
0      3    *          *   *             root    /usr/local/bin/backup-braggo.sh

* quer dizer "todos". Confira se o serviço está vivo: systemctl is-active cron.

Roteiro de estudo sugerido

  1. Rode, só para olhar, os comandos das tabelas acima (todos de leitura).
  2. Leia um log de ponta a ponta: sudo journalctl -u braggo-api -n 100 --no-pager.
  3. Quebre algo no snapshot de propósito (pare o Nginx, por exemplo) e conserte seguindo Problemas comuns.
  4. Faça o teste de restauração do backup.
  5. Depois, estude permissões e systemd com calma: são a base de tudo aqui.