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 donetstat).
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 logoutscreenoutmux: sessões persistentes que sobrevivem a desconexões SSH.tmuxé o mais moderno e recomendado.kill -9 PID: força término de processo. Preferekill 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 60Com 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.