#!/bin/bash # 分析哪些东西可以安全清理(只读,先不动手) set -u echo "════════ 1. MySQL / MariaDB 到底有没有在用 ════════" for svc in mysql mariadb mysqld; do st=$(systemctl is-active $svc 2>/dev/null) en=$(systemctl is-enabled $svc 2>/dev/null) [ "$st" != "" ] || [ "$en" != "" ] && echo " $svc: active=$st enabled=$en" done echo " 进程:" pgrep -a -f 'mysqld|mariadb' | head -3 | sed 's/^/ /' || echo " 没有 mysqld 在跑" echo " 数据目录大小:" du -sh /var/lib/mysql 2>/dev/null | sed 's/^/ /' echo " 有没有别的服务依赖它:" grep -rl 'mysql\|mariadb' /etc/systemd/system/*.service 2>/dev/null | head -5 | sed 's/^/ /' || echo " 没有" echo echo "════════ 2. 这台机器上装了哪些非系统服务 ════════" systemctl list-unit-files --state=enabled --no-pager 2>/dev/null \ | grep -vE '^(systemd|dbus|getty|rsyslog|cron|ssh|networking|wpa|avahi|bluetooth|ModemManager|NetworkManager|udev|e2scrub|fstrim|logrotate|man-db|apt-daily|dpkg-db|ifupdown|user@|serial-getty|console-setup|keyboard-setup|hwclock|kmod|procps|rc-local|qemu|cloud-init)' \ | head -25 | sed 's/^/ /' echo echo "════════ 3. 中转真正需要的服务 ════════" for svc in lanremote-relay lanremote-nettune lanremote-tunnel lanremote-tunnel-h2 lanremote-watchdog; do printf " %-26s enabled=%-10s active=%s\n" "$svc" \ "$(systemctl is-enabled $svc 2>/dev/null || echo '-')" \ "$(systemctl is-active $svc 2>/dev/null || echo '-')" done echo echo "════════ 4. 可安全清理的项(估个大小)════════" apt_cache=$(du -sm /var/cache/apt 2>/dev/null | awk '{print $1}') apt_lists=$(du -sm /var/lib/apt/lists 2>/dev/null | awk '{print $1}') logs=$(du -sm /var/log 2>/dev/null | awk '{print $1}') journal=$(journalctl --disk-usage 2>/dev/null | grep -oE '[0-9.]+[MG]' | head -1) echo " apt 包缓存 /var/cache/apt ${apt_cache:-0} MB (apt clean 可清)" echo " apt 索引 /var/lib/apt/lists ${apt_lists:-0} MB (apt clean 可清,但下次 apt update 会重下)" echo " /var/log ${logs:-0} MB (日志,可截断)" echo " journald ${journal:-0} (可 vacuum 到 20M)" echo " /root 下我的调试脚本 $(du -sm /root 2>/dev/null | awk '{print $1}') MB 中的一部分" echo " MySQL 数据 $(du -sm /var/lib/mysql 2>/dev/null | awk '{print $1}' || echo 0) MB (若没在用可卸)" echo echo "════════ 5. 我遗留的调试脚本(/root 下的 .sh/.py)════════" n=$(ls -1 /root/*.sh /root/*.py 2>/dev/null | wc -l) sz=$(du -sc /root/*.sh /root/*.py 2>/dev/null | tail -1 | awk '{print $1}') echo " 文件数: $n 合计: $((sz / 1024)) KB" echo " 列表(前 25 个):" ls -1 /root/*.sh /root/*.py 2>/dev/null | head -25 | sed 's/^/ /' echo echo "════════ 6. 有没有 apt 残留 / 大而无用的包 ════════" dpkg -l 2>/dev/null | awk '$1=="rc" {print " 残留配置: " $2}' | head -12 echo " 可以 autoremove 的:" apt-get -s autoremove 2>/dev/null | grep -E '^Remv' | head -12 | sed 's/^/ /' || echo " (需要 apt-get update 后才能算)"