Tech & Data

Linux para developers — comandos e configurações essenciais

Os comandos Linux que uso diariamente como developer e engenheiro de dados: shell scripting, diagnóstico de sistemas, e configurações que aumentam a produtividade.

Linux para developers — comandos e configurações essenciais

Trabalhar bem em Linux não é uma questão de memorizar comandos — é uma questão de desenvolver o modelo mental certo sobre como o sistema funciona. Uma vez que entendes ficheiros, processos, streams e permissões, a maioria dos comandos torna-se intuitiva. Este artigo cobre os comandos e conceitos que uso diariamente e que recomendo a qualquer developer.

Diagnóstico de sistema — saber o que está a acontecer

  • htop / top: processos, CPU, memória em tempo real. htop é mais legível e permite ordenar por coluna interactivamente.
  • df -h: espaço em disco por filesystem. O -h é human-readable.
  • du -sh /var/* | sort -rh | head -20: encontra os 20 maiores directórios em /var, ordenado por tamanho.
  • lsof -i :8080: o que está a escutar na porta 8080. Indispensável para resolver conflitos de porta.
  • ss -tulnp: todas as portas abertas com o processo que as detém (substituto moderno do netstat).

Manipulação de texto — grep, awk, sed

A combinação grep + awk + sed resolve 90% dos problemas de manipulação de texto em ficheiros de log ou output de processos:

# Erros nas últimas 100 linhas do log
tail -100 /var/log/app.log | grep -i error

# Contar ocorrências por status code em access log
awk '{print $9}' access.log | sort | uniq -c | sort -rn

# Substituir string em todos os ficheiros PHP recursivamente
find . -name '*.php' -exec sed -i 's/old_string/new_string/g' {} \;

Processos e jobs

  • nohup command &: corre um processo em background que sobrevive ao logout
  • screen ou tmux: sessões persistentes que sobrevivem a desconexões SSH. tmux é o mais moderno e recomendado.
  • kill -9 PID: força término de processo. Prefere kill PID (SIGTERM) primeiro — dá ao processo oportunidade de limpar.
  • ps aux | grep nome: encontra processos por nome com PIDs e consumo de recursos

SSH e produtividade remota

O ficheiro ~/.ssh/config é um dos mais úteis e menos conhecido:

Host prod
  HostName 192.168.1.100
  User deploy
  IdentityFile ~/.ssh/prod_key
  ServerAliveInterval 60

Com isto, ssh prod substitui o comando completo com todos os parâmetros. O ServerAliveInterval 60 evita que a sessão SSH seja cortada por timeouts de rede.

Shell scripting — automação pragmática

Sempre começo scripts Bash com set -euo pipefail: exit em qualquer erro (-e), erro em variáveis não definidas (-u), e propagação de erros em pipes (-o pipefail). Sem isto, scripts falham silenciosamente de formas difíceis de debugar.