用GPT-4o分析并修改了一下,各位大佬看看 修改建议 删除旧内核前检查: 增加对当前内核和正在使用的内核包的检查,避免误删除。 日志文件保留策略: 保留最近一段时间内的重要日志文件,例如最近一周或一个月的日志文件。 孤立包清理确认: 在清理孤立包前,输出要删除的包列表并等待用户确认。 修改后的脚本示例 以下是对原脚本进行了一些修改后的版本,增加了部分安全检查和用户确认步骤: #!/bin/bash # 确保脚本以root权限运行 if [[ $EUID -ne 0 ]]; then echo "此脚本必须以root权限运行" exit 1 fi start_space=$(df / | tail -n 1 | awk '{print $3}') # 检测并设置包管理器变量 if command -v apt-get > /dev/null; then PKG_MANAGER="apt" CLEAN_CMD="apt-get autoremove -y && apt-get clean" PKG_UPDATE_CMD="apt-get update" INSTALL_CMD="apt-get install -y" PURGE_CMD="apt-get purge -y" elif command -v dnf > /dev/null; then PKG_MANAGER="dnf" CLEAN_CMD="dnf autoremove -y && dnf clean all" PKG_UPDATE_CMD="dnf update" INSTALL_CMD="dnf install -y" PURGE_CMD="dnf remove -y" elif command -v apk > /dev/null; then PKG_MANAGER="apk" CLEAN_CMD="apk cache clean" PKG_UPDATE_CMD="apk update" INSTALL_CMD="apk add" PURGE_CMD="apk del" else echo "不支持的包管理器" exit 1 fi # 正在更新依赖 echo "正在更新依赖..." if [ "$PKG_MANAGER" = "apt" ] && [ ! -x /usr/bin/deborphan ]; then $PKG_UPDATE_CMD > /dev/null 2>&1 $INSTALL_CMD deborphan > /dev/null 2>&1 fi # 安全删除旧内核(只适用于使用apt和dnf的系统) echo "正在删除未使用的内核..." if [[ "$PKG_MANAGER" == "apt" || "$PKG_MANAGER" == "dnf" ]]; then current_kernel=$(uname -r) if [[ "$PKG_MANAGER" == "apt" ]]; then kernel_packages=$(dpkg --list | grep -E '^ii linux-(image|headers)-[0-9]+' | awk '{ print $2 }' | grep -v "$current_kernel") else kernel_packages=$(rpm -qa | grep -E '^kernel-(core|modules|devel)-[0-9]+' | grep -v "$current_kernel") fi if [ ! -z "$kernel_packages" ]; then echo "找到旧内核,正在删除:$kernel_packages" $PURGE_CMD $kernel_packages > /dev/null 2>&1 [[ "$PKG_MANAGER" == "apt" ]] && update-grub > /dev/null 2>&1 else echo "没有旧内核需要删除。" fi fi # 清理系统日志文件(保留最近一周的日志) echo "正在清理系统日志文件..." find /var/log -type f -name "*.log" -mtime +7 -exec truncate -s 0 {} \; > /dev/null 2>&1 find /root -type f -name "*.log" -mtime +7 -exec truncate -s 0 {} \; > /dev/null 2>&1 find /home -type f -name "*.log" -mtime +7 -exec truncate -s 0 {} \; > /dev/null 2>&1 find /ql -type f -name "*.log" -mtime +7 -exec truncate -s 0 {} \; > /dev/null 2>&1 # 清理缓存目录 echo "正在清理缓存目录..." find /tmp -type f -mtime +1 -exec rm -f {} \; find /var/tmp -type f -mtime +1 -exec rm -f {} \; for user in /home/* /root; do cache_dir="$user/.cache" if [ -d "$cache_dir" ]; then rm -rf "$cache_dir"/* > /dev/null 2>&1 fi done # 清理Docker(如果使用Docker) if command -v docker &> /dev/null then echo "正在清理Docker镜像、容器和卷..." docker system prune -a -f --volumes > /dev/null 2>&1 fi # 清理孤立包(仅apt) if [ "$PKG_MANAGER" = "apt" ]; then echo "正在清理孤立包..." orphan_packages=$(deborphan --guess-all) if [ ! -z "$orphan_packages" ]; then echo "找到孤立包,正在删除:$orphan_packages" echo "$orphan_packages" | xargs -r apt-get -y remove --purge > /dev/null 2>&1 else echo "没有孤立包需要删除。" fi fi # 清理包管理器缓存 echo "正在清理包管理器缓存..." $CLEAN_CMD > /dev/null 2>&1 end_space=$(df / | tail -n 1 | awk '{print $3}') cleared_space=$((start_space - end_space)) echo "系统清理完成,清理了 $((cleared_space / 1024))M 空间!"
感谢!
好东东
好东西
收藏
厉害了
好东西,试一试,Ubuntu可行吗
用GPT-4o分析并修改了一下,各位大佬看看
修改建议
删除旧内核前检查:
增加对当前内核和正在使用的内核包的检查,避免误删除。
日志文件保留策略:
保留最近一段时间内的重要日志文件,例如最近一周或一个月的日志文件。
孤立包清理确认:
在清理孤立包前,输出要删除的包列表并等待用户确认。
修改后的脚本示例
以下是对原脚本进行了一些修改后的版本,增加了部分安全检查和用户确认步骤:
好东西,收藏了呀
不错不错
绑定