Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

🩺 macOS Healthcheck

License: MIT Platform: macOS Language: Bash Dependencies: none

Um script único e fácil de rodar que faz um diagnóstico completo de saúde do seu Mac direto no terminal — e, mais importante, interpreta os números para você. Em vez de despejar dados crus, ele dá uma nota de saúde (0-100) e um veredito claro por item: 🟢 tudo certo, ⚠️ atenção ou 🔴 crítico. Ainda guarda um histórico para você ver se algo está piorando com o tempo.

Feito para Apple Silicon (M1–M4), testado em MacBook Pro M4 (16 GB RAM / 512 GB SSD), macOS 26.

Demo do healthcheck rodando

O que ele verifica

Seção O que mostra
Sistema Versão do macOS, modelo, chip, núcleos, uptime (avisa se você está há muito tempo sem reiniciar)
CPU / GPU Núcleos de performance vs. eficiência, GPU, load average, uso atual, top 5 processos por CPU e apps que mais gastam energia
Memória RAM total/usada/livre, memória app/wired/comprimida, pressão de memória e swap (o indicador mais importante), top 5 processos por RAM
Armazenamento Espaço do SSD (usado/livre/capacidade) com barra visual
Limpeza de disco O que come espaço: Downloads, Lixeira, Caches e snapshots locais do Time Machine — com dicas do que dá pra limpar
Bateria & energia Carga, fonte, ciclos, condição, capacidade máxima, fluxo de energia em watts (carregando/descarregando, sem sudo), temperatura da bateria, carregador conectado e dispositivos Bluetooth (com nível de bateria quando o dispositivo reporta)
Rede Interface ativa, IP, Wi-Fi (SSID, sinal/SNR, velocidade de link, banda/canal), VPN ativa, servidores DNS, tempo de resolução DNS, latência média e perda de pacotes
Térmica Avisos térmicos e limite de CPU; com --deep, temperatura e consumo reais
Segurança & manutenção FileVault, Firewall, SIP, Gatekeeper, saúde física do SSD (SMART), kernel panics, crashes de apps (7 dias), atualizações do macOS pendentes, status do backup Time Machine e launch agents de terceiros

No final, uma nota de saúde de 0 a 100 resume tudo num relance (Excelente / Bom / Atenção / Crítico) — e, se você usa --save, uma linha "Desde DD/MM" compara RAM, swap, disco e nota com o último snapshot.

Requisitos

Nenhum. É Bash puro usando só ferramentas nativas do macOS. Não precisa instalar Python, Homebrew nem nada.

Instalação

Opção 1 — comando global (recomendado)

bash install.sh

Isso cria o comando healthcheck, que você pode rodar de qualquer pasta:

healthcheck

Opção 2 — rodar direto, sem instalar

chmod +x healthcheck.sh
./healthcheck.sh

Uso

healthcheck # SEM flag, num terminal: abre um menu interativo
healthcheck --deep # inclui temperatura e consumo (pede sudo uma vez)
healthcheck --json # saída em JSON (para salvar/integrar)
healthcheck --no-color # sem cores (bom para pipes e arquivos)
healthcheck --save # roda e salva um snapshot no histórico
healthcheck --history # mostra a evolução ao longo do tempo (tendências)
healthcheck --fast # pula os scans lentos (limpeza de disco, energia por app)
healthcheck --summary # roda tudo mas mostra só a nota e os avisos
healthcheck --section rede # roda só uma seção (sistema, cpu, memoria, disco,
 # limpeza, bateria, rede, termica, seguranca)
healthcheck --clean # apaga temporários seguros, com confirmação (ver abaixo)
healthcheck --clean --yes # o mesmo, sem pedir confirmação
healthcheck --help # ajuda

Menu interativo: rodar healthcheck sozinho num terminal abre um menu numerado (diagnóstico completo, rápido, resumo, profundo, limpar temporários, histórico e ajuda) — é só digitar o número. Passar qualquer flag pula o menu e executa direto. Em pipe/arquivo (sem terminal), healthcheck continua rodando o diagnóstico completo, para não quebrar automações.

Enquanto coleta, o script mostra a etapa atual (⏳ escaneando Downloads...) numa linha que some sozinha — assim você sabe o que está demorando. As flags combinam: healthcheck --fast --summary é um check-up de segundos só com a nota.

Exemplos úteis:

# Salvar um snapshot com data
healthcheck --json > "healthcheck-$(date +%Y%m%d).json"
# Validar/formatar o JSON
healthcheck --json | python3 -m json.tool

Acompanhar tendências (histórico)

Rode healthcheck --save de vez em quando (ou depois de reiniciar) para guardar um retrato da máquina. Depois:

healthcheck --history

mostra uma mini-tabela dos últimos snapshots e setas de tendência comparando com o snapshot anterior — se RAM, swap e disco subiram (🔴↑) ou desceram (🟢↓) e como a nota de saúde evoluiu. Assim você percebe se algo está piorando aos poucos. O histórico fica em ~/.healthcheck/history.tsv (um arquivo de texto simples; pode apagar quando quiser).

Liberar espaço com --clean

Além de medir o que ocupa espaço (seção "Limpeza de disco"), o --clean pode apagar o que é seguro remover:

healthcheck --clean

Ele lista cada alvo com o tamanho, mostra o total recuperável e só apaga depois que você confirmar (s/n):

  • Lixeira (~/.Trash) — o que você já mandou pro lixo.
  • Caches do usuário (~/Library/Caches) — os apps recriam conforme precisam.
  • Temporários do sistema ($TMPDIR) — o macOS recria sozinho.
  • Logs de crash antigos (.ips/.crash com mais de 30 dias).

Ele nunca toca em documentos, apps, ajustes ou no histórico do próprio healthcheck. Itens em uso por apps abertos podem resistir à remoção — o script mede o resultado real e informa quanto liberou de fato. Para automatizar (pular a confirmação), use healthcheck --clean --yes.

Esta é a única ação que modifica o sistema, e é totalmente opt-in — sem --clean, o healthcheck é 100% somente leitura.

Como ler os vereditos

Cada métrica ganha um símbolo:

  • OK — dentro do saudável.
  • ⚠️ Atenção — não é urgente, mas vale ficar de olho.
  • 🔴 Crítico — merece ação.

No fim, um resumo mostra a nota de saúde e lista só os pontos de atenção (críticos primeiro), cada um com uma dica do que fazer.

Nota de saúde (0-100)

Começa em 100 e desconta por problema encontrado: −20 por item crítico e −8 por item de atenção, como base. Alguns itens de severidade contínua descontam proporcionalmente ao quão ruins estão: disco crítico desconta de −20 (92%) até −30 (97%+), swap ≥ 8 GB desconta −28, pressão de memória crítica −24. A faixa vira um rótulo:

Nota Rótulo
90–100 🟢 Excelente
75–89 🟢 Bom
50–74 ⚠️ Atenção
0–49 🔴 Crítico

Limites usados

Métrica ⚠️ Atenção 🔴 Crítico
Uptime > 14 dias
Load de CPU ×ばつ núcleos ×ばつ núcleos
Pressão de memória (livre) < 25% < 10%
Swap em uso ≥ 1 GB ≥ 4 GB
Disco (capacidade) ≥ 85% ≥ 92%
Lixeira / Downloads grandes ≥ 1 GB / ≥ 5 GB
FileVault / Firewall / SIP / Gatekeeper desligado
SSD (SMART) ≠ Verified
Kernel panics (30 dias) ≥ 1
Crashes de apps (7 dias) ≥ 8
Atualizações do macOS ≥ 1 pendente
Time Machine sem destino, ou último backup > 7 dias
Capacidade máx. bateria < 80%
Condição da bateria ≠ Normal
Temperatura da bateria ≥ 40 °C ≥ 45 °C
Sinal do Wi-Fi (RSSI) < −67 dBm < −78 dBm
Resolução DNS ≥ 100 ms
Latência de internet (média de 4 pings) ≥ 150 ms
Perda de pacotes > 0% ≥ 25%

Load de CPU logo após o boot: nos primeiros 5 minutos após ligar/reiniciar, o load average fica sempre inflado (Spotlight indexando, iCloud sincronizando, download de assets do sistema). Nesse período o healthcheck mostra a carga como informativa e não desconta da nota — evitando um "crítico" falso.

FAQ

Por que o --deep pede senha? Temperatura e consumo de energia vêm do powermetrics, que no macOS exige sudo. Sem --deep, o script roda 100% sem senha e ainda mostra os avisos térmicos.

O que é "swap"? Quando a RAM enche, o macOS move parte da memória para o SSD (swap). Um pouco é normal, mas swap alto (vários GB) deixa tudo mais lento e desgasta o SSD — sinal de que a RAM está saturando. Fechar apps pesados ou reiniciar resolve.

O que é "pressão de memória"? É o indicador mais fiel de "a memória está apertada?". Melhor que olhar só "RAM livre", porque o macOS usa RAM livre como cache de propósito. Enquanto a pressão estiver baixa (muito % livre), está tudo bem.

Por que "memória comprimida" às vezes aparece alta? O macOS comprime memória pouco usada em vez de mandar tudo pro swap. É um recurso normal; só vira preocupação junto com swap alto e pressão de memória alta.

O que são os "snapshots locais do Time Machine"? Cópias temporárias que o macOS guarda no próprio SSD quando o disco de backup não está por perto. Ocupam espaço, mas o sistema as remove sozinho conforme precisa. Para forçar a limpeza: tmutil thinlocalsnapshots /.

Por que ligar o Firewall? Ele bloqueia conexões de entrada não solicitadas. É uma camada extra de proteção, especialmente em redes públicas (Wi-Fi de café, aeroporto). Ativa em Ajustes > Rede > Firewall.

A seção "Limpeza de disco" demora um pouco. Por quê? Ela mede o tamanho real de pastas grandes (Downloads, Caches) com du, que precisa varrer os arquivos. Por isso o script mostra a etapa atual ("⏳ escaneando Downloads...") e tem um limite de tempo para não travar. Com pressa, use --fast para pular essa parte.

A latência apareceu alta, mas minha internet é boa. Por quê? Se você usa VPN, todo o tráfego dá uma volta a mais — o script mostra a VPN ativa na seção Rede justamente para contextualizar. Teste desconectar a VPN e rodar healthcheck --section rede para comparar.

Onde fica o histórico? Em ~/.healthcheck/history.tsv. Só é gravado quando você roda com --save. É um texto simples que você pode abrir, versionar ou apagar à vontade.

Ele altera algo no meu sistema? Por padrão, não — é somente leitura. Só há duas exceções, ambas opt-in: --save, que escreve o histórico em ~/.healthcheck, e --clean, que apaga temporários seguros (Lixeira, caches, temporários e logs antigos) após você confirmar. Sem essas flags, ele apenas consulta e exibe.

Desinstalar

rm -f /usr/local/bin/healthcheck ~/.local/bin/healthcheck
rm -rf ~/.healthcheck # remove também o histórico, se quiser

Estrutura

healthcheck/
├── healthcheck.sh # o script principal
├── install.sh # instalador do comando global
├── README.md # este arquivo
├── CONTRIBUTING.md # como contribuir
├── LICENSE # licença MIT
└── docs/
 └── demo.gif # demonstração usada no README

Segurança & privacidade

  • Somente leitura por padrão. O script apenas consulta e exibe informações do sistema. Duas ações, ambas opt-in, fogem disso: --save escreve o histórico em ~/.healthcheck/history.tsv, e --clean apaga temporários seguros (Lixeira, caches, temporários e logs de crash antigos) após confirmação explícita. Sem essas flags, ele não altera nada no seu Mac.
  • Sem telemetria. Nada é enviado para lugar nenhum. Os únicos acessos de rede são um ping e uma consulta de DNS para medir sua própria latência — nenhum dado seu sai da máquina.
  • Sem privilégios por padrão. Tudo roda sem senha. Só o --deep pede sudo, porque temperatura e consumo vêm do powermetrics, que exige elevação.
  • Zero dependências. Não instala nada e não baixa pacotes.

Contribuindo

Contribuições são bem-vindas! Leia o CONTRIBUTING.md para os princípios do projeto (zero dependências, somente leitura, compatível com Bash 3.2) e como testar antes de abrir um PR. Bugs e ideias: abra uma issue.

Licença

Distribuído sob a licença MIT. Veja LICENSE para o texto completo.

Autor

Feito por Bernardo Rodrigues@berodcdev.

About

Diagnóstico de saúde do macOS para Apple Silicon em Bash puro, zero dependências — com nota de saúde 0-100.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /