Esse script, criado com a ajuda do Gemini, permite fazer limpeza, atualização e diagnóstico no Debian 13. Resolvi criar após erros e travamentos no meu sistema, devido à instalação de programas. Ele detectou tudo que estava com problemas e, submetendo o relatório ao Gemini, consegui resolver.
#!/bin/bash
# ==============================================================================
# AVISO SOBRE O HISTÓRICO DE LOGS:
# Este script utiliza 'journalctl --vacuum-time=1s' ao final da execução.
# Isso remove todos os logs anteriores para garantir que relatórios futuros
# mostrem apenas erros novos. Se o sistema sofrer um erro crítico ou travar,
# analise os logs ANTES de rodar este script, pois o histórico será apagado.
# ==============================================================================
# 1. Detecta o usuário real (mesmo se rodar com sudo) e define o diretório
REAL_USER=${SUDO_USER:-$USER}
REAL_HOME=$(getent passwd "$REAL_USER" | cut -d: -f6)
DIRETORIO_REPORTS="$REAL_HOME/Reports"
# 2. Cria a pasta com as permissões corretas para o seu usuário
sudo install -d -o "$REAL_USER" -g "$REAL_USER" "$DIRETORIO_REPORTS"
# 3. Define o nome do arquivo
ARQUIVO_LOG="$DIRETORIO_REPORTS/Relatorio_Manutencao_$(date +%Y%m%d_%H%M%S).txt"
# Inicia o bloco de captura (Tudo aqui dentro vai para o arquivo e para a tela)
{
echo "====================================================="
echo " MANUTENÇÃO, ATUALIZAÇÃO E ANÁLISE"
echo " Data: $(date)"
echo " Usuário: $REAL_USER"
echo "====================================================="
# --- PARTE 1: ATUALIZAÇÃO E MANUTENÇÃO ---
printf "\n%s* 1. Atualizando o sistema...%s\n" "$B" "$N"
sudo apt update -y 2>/dev/null && sudo apt full-upgrade -y 2>/dev/null
if dpkg -s flatpak >/dev/null 2>&1; then
printf "\n%s- Atualizando e limpando flatpaks...%s\n" "$B" "$N"
flatpak update -y
flatpak uninstall --unused -y
fi
printf "\n%s* 2. Limpeza de pacotes e cache...%s\n" "$B" "$N"
sudo apt purge --autoremove -y 2>/dev/null
sudo apt autoclean -y 2>/dev/null
sudo apt clean 2>/dev/null
printf "\n%s* Executando o TRIM...%s\n" "$B" "$N"
fstrim -v /
# --- PARTE 2: ANÁLISE DE SAÚDE ---
echo -e "\n====================================================="
echo " DIAGNÓSTICO DE ERROS (PÓS-MANUTENÇÃO)"
echo "====================================================="
echo -e "\n[1/4] Verificando integridade de pacotes..."
sudo dpkg --configure -a
sudo apt-get check 2>/dev/null || echo "ERRO: Problemas nas dependências encontrados."
echo -e "\n[2/4] Erros críticos no log (Última sessão):"
sudo journalctl -p 3 -b --no-pager
echo -e "\n[3/4] Alertas do Kernel (Hardware/Drivers):"
sudo dmesg -T --level=err,crit,alert | tail -n 10
echo -e "\n[4/4] Top 5 Processos (CPU):"
ps aux --sort=-%cpu | head -n 6
echo -e "\n====================================================="
echo " LIMPANDO HISTÓRICO DE LOGS (Journal Vacuum)"
echo "====================================================="
sudo journalctl --vacuum-time=1s
echo -e "\nFIM DO PROCESSO: $(date +%H:%M:%S)"
echo "AVISO: O histórico de logs foi resetado para garantir relatórios limpos."
} | tee "$ARQUIVO_LOG"
# Ajusta permissão para o usuário real (Ricardo)
sudo chown "$REAL_USER":"$REAL_USER" "$ARQUIVO_LOG"
printf "\n%s* Concluído! Relatório salvo em: %s%s\n" "$B" "$ARQUIVO_LOG" "$N"
printf "%s* NOTA:%s Histórico de logs limpo para a próxima análise.\n\n" "$B" "$N"
[2] Comentário enviado por Zoiudo em 14/01/2026 - 09:32h
Dei uma fuçada pra dar uma escolha gráfica pro usuário entre manutenção e diagnóstico, usa zenity para Gnome e kdialog pra KDE, detecta hdd ou ssd, teste aí:
#!/bin/bash
# ==============================================================================
# MANUTENÇÃO E DIAGNÓSTICO – VERSÃO GRÁFICA COM ESCOLHA - "MANUGNÓSTICO"
# KDE (kdialog) | GNOME (zenity)
# Debian e agregados
# ==============================================================================
echo
echo "[4] Top processos por CPU:"
ps aux --sort=-%cpu | head -n 6
echo
echo "=== FIM DO DIAGNÓSTICO ==="
} | tee "$LOG"
chown "$REAL_USER:$REAL_USER" "$LOG"
}
# --- Execução ---
OP=$(menu) || exit 0
case "$OP" in
1)
manutencao
;;
2)
diagnostico
;;
*)
exit 0
;;
esac
# --- Resumo ---
if [ "$ERROS" -gt 0 ]; then
notify "Processo concluído com ALERTAS.\nErros detectados: $ERROS\nRelatórios em ~/Reports" "error"
else
notify "Processo concluído com SUCESSO.\nNenhum erro crítico detectado.\nRelatórios em ~/Reports" "info"
fi
"O maior fracasso da nossa espécie não é falta de tecnologia. É termos tecnologia suficiente para salvar todos e coragem política apenas para salvar alguns." - ChatGPT