# System Diagnostic — Linux Cheatsheet > Comandos essenciais para análise de sistema, processos, disco, rede e segurança. ## Diagnóstico Rápido ```bash uptime # Uptime + média de carga (1, 5, 15 min) w # Usuários logados + carga dmesg -T # Logs do kernel com timestamp who # Quem está logado agora last # Histórico de login lastlog # Último login de cada usuário lsb_release -a # Versão do SO uname -a # Kernel info completo lscpu # Info da CPU lsblk # Dispositivos de bloco (discos) mount | column -t # Filesystems montados df -h # Uso de disco (human-readable) df -i # Inodes por filesystem free -h # RAM/Swap swapon --show # Partições de swap ativas cat /proc/loadavg # Load average preciso ``` ## 🔍 Saúde do Sistema ```bash # Processos por CPU ps aux --sort=-%cpu | head ps aux --sort=-%mem | head # Top em tempo real htop top # Serviços com problema systemctl --type=service --state=failed systemctl list-units --state=failed # Atualizações disponíveis apt list --upgradable 2>/dev/null | grep "^.*/.*" dnf check-update 2>/dev/null ``` ## 🕵️ Análise de Logs ```bash # Logs de системы em tempo real journalctl -f journalctl -u nginx --since "1h" journalctl -p err --since "30min" # Apenas erros recentes # Logs de autenticação grep "Failed password" /var/log/auth.log grep "Accepted" /var/log/auth.log | tail -20 # Logs estruturados (JSON) com jq jq 'select(.level=="ERROR") | .user + ": " + .message' app.log # Tamanho de arquivos de log du -sh /var/log/ find /var/log -name "*.log" -size +100M -exec ls -lh {} \; # Erros em tempo real tail -f /var/log/syslog ``` ## 🕸️ Diagnóstico de Rede ```bash ss -tlnp # Portas TCP abertas (listening) — substitui netstat ss -tunp # Todas as conexões (TCP/UDP) ss -s # Estatísticas de conexão ip addr # Endereços IP das interfaces ip route # Tabela de roteamento ping -c 5 8.8.8.8 # Teste de conectividade traceroute 8.8.8.8 # Rota até destino mtr --report 8.8.8.8 # Traceroute + estatísticas contínuas nslookup dominio.com # DNS lookup dig dominio.com A # DNS detalhado # Velocidade de download curl -o /dev/null -s -w 'Speed: %{speed_download} bytes/sec\n' http://example.com/file # WHOIS whois dominio.com curl -s https://ipinfo.io/json ``` ## 🔐 Usuários e Permissões ```bash who # Quem está logado w # Mais detalhes (idle, processo) id # UID/GID do usuário atual sudo -l -U root # O que root pode executar sem senha grep sudo /etc/group # Quem está no grupo sudo # Ou: lista de usuários com UID >= 1000 awk -F: '($3 >= 1000) && ($3 < 65534)' /etc/passwd # Permissões de arquivo find /pasta -perm /111 -ls # Todos os executáveis na pasta namei -l /caminho/para/arquivo # Mostra permissões em cada nível stat /caminho/arquivo # Permissões detalhadas + dono + timestamps # SSH sshd -T # Configuração SSH ativa (efetiva) ssh-copy-id user@host # Copiar chave pública para remoto ``` ## 💻 Scripts Shell ```bash #!/usr/bin/env bash set -euo pipefail # Erro se: erro (-e), variável não definida (-u), pipe falha (-o pipefail) # Logging log() { echo "[$(date -Iseconds)] $*" >> /var/log/meu-script.log } log "Iniciando..." # Trap para cleanup — executa no EXIT ou SIGINT trap 'rm -f /tmp/$$tmpfile; log "Limpeza concluída"' EXIT # Verificar binário antes de usar if ! command -v jq >/dev/null 2>&1; then log "ERRO: jq não encontrado" exit 1 fi ``` ## 📦 Monitoramento de Saúde ```bash # Verificar Uptime de um processo systemd-analyze time systemd-analyze critical-chain # Histórico de uso de CPU/memória por processo pidstat -u -p ALL 1 5 # Memória detalhada cat /proc/meminfo | grep -E "MemTotal|MemAvailable|MemFree" ```