Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战​

本文涉及的产品
可观测监控 Prometheus 版,每月50GB免费额度
注册配置 MSE Nacos/ZooKeeper,182元/月
云原生网关 MSE Higress,422元/月
简介: 这篇博客介绍了一个实用的Linux系统盘清理脚本,主要功能包括: 安全权限检查和旧内核清理,保留当前使用内核 7天以上日志文件清理和系统日志压缩 浏览器缓存(Chrome/Firefox)、APT缓存、临时文件清理 智能清理Snap旧版本和Docker无用数据 提供磁盘空间使用前后对比和大文件查找功能 脚本采用交互式设计确保安全性,适合定期维护开发环境、服务器和个人电脑。文章详细解析了脚本的关键功能代码,并给出了使用建议。完整脚本已开源,用户可根据需求自定义调整清理策略。

✨重磅!盹猫的个人小站正式上线啦~诚邀各位技术大佬前来探秘!✨

这里有:

  • 硬核技术干货:编程技巧、开发经验、踩坑指南,带你解锁技术新姿势!
  • 趣味开发日常:代码背后的脑洞故事、工具测评,让技术圈不再枯燥~
  • 独家资源分享:开源项目、学习资料包,助你打怪升级快人一步!

👉 点击直达→ 盹猫猫的个人小站 👈

🌟 来逛逛吧,说不定能挖到你正在找的技术宝藏哦~

目录

引言

脚本功能概述

脚本亮点解析

1. 安全的权限检查

2. 智能的旧内核清理

3. 全面的日志管理

4. 用户友好的浏览器缓存清理

使用建议

清理效果对比

结语

脚本源码


欢迎来到 盹猫(>^ω^<)的博客

本篇文章主要介绍了

[Linux一键清理系统垃圾:释放30GB空间的Shell脚本实战]

❤博主广交技术好友,喜欢文章的可以关注一下❤

引言

作为一名Linux用户,你是否曾因系统盘空间不足而烦恼?随着系统使用时间的增长,各种缓存文件、旧内核、日志文件会不断累积,占用宝贵的磁盘空间。今天我要分享一个实用也是本人一直在用的Bash脚本,它能自动化完成Linux系统盘的清理工作,让你的系统重获新生。

脚本功能概述

这个系统盘清理脚本提供了全方位的清理功能:

  1. 基础清理:APT缓存、临时文件、缩略图缓存
  2. 系统维护:旧内核移除、日志轮转
  3. 应用清理:浏览器缓存、Snap旧版本、Docker无用数据
  4. 空间分析:大文件查找、磁盘使用情况对比

查找出大文件后,可以对较大的文件做进一步的处理,如果是安装的无用文件,可以卸载获得空间。

脚本亮点解析

1. 安全的权限检查

if [ "$(id -u)" -ne 0 ]; then
    echo -e "${YELLOW}警告: 建议使用root权限运行此脚本以执行所有清理操作${NC}"
    read -p "是否继续? (y/n) " -n 1 -r
    echo
    if [[ ! $REPLY =~ ^[Yy]$ ]]; then
        exit 1
    fi
fi

image.gif

脚本首先检查执行权限,如果不是root用户会给出警告。这种交互式确认设计既保证了安全性,又给了用户灵活选择的空间。

2. 智能的旧内核清理

current_kernel=$(uname -r)
sudo apt-get purge $(dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | grep -vE "$current_kernel|$(echo $current_kernel | sed 's/-generic//')" | sort -u)

image.gif

这段代码会:

  1. 获取当前正在使用的内核版本
  2. 列出所有已安装的内核包
  3. 排除当前使用中的内核
  4. 安全移除其他旧内核

这种设计确保了我们至少保留一个可用的内核版本,避免系统无法启动的风险。

3. 全面的日志管理

find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
journalctl --vacuum-time=7d

image.gif

双重日志清理策略:

  • 删除/var/log目录下超过7天的日志文件
  • 使用journalctl压缩系统日志,仅保留最近7天的记录

4. 用户友好的浏览器缓存清理

for user in /home/*; do
    [ -d "$user" ] || continue
    echo "清理用户: $(basename "$user")"
    [ -d "$user/.cache/google-chrome/Default/Cache" ] && rm -rf "$user/.cache/google-chrome/Default/Cache"
    [ -d "$user/.cache/mozilla/firefox" ] && find "$user/.cache/mozilla/firefox" -name "cache2" -exec rm -rf {} +
done

image.gif

这段代码会:

  • 遍历/home目录下的所有用户
  • 清理Chrome和Firefox的浏览器缓存
  • 显示正在清理哪个用户的缓存

使用建议

  1. 定期运行:建议每月运行一次,保持系统清洁
  2. 谨慎选择:对于Docker清理等操作,脚本会请求确认
  3. 备份重要数据:虽然脚本设计安全,但清理前备份总是好习惯
  4. 自定义调整:可根据需要修改保留天数(如日志的7天期限)

清理效果对比

脚本会在执行前后分别显示磁盘使用情况,让你直观看到空间释放效果:

echo -e "\n${GREEN}=== 当前磁盘使用情况 ===${NC}"
df -h /
# ...各种清理操作...
echo -e "\n${GREEN}=== 清理后磁盘使用情况 ===${NC}"
df -h /

image.gif

结语

这个自动化清理脚本是Linux系统维护的得力助手,特别适合:

  • 开发环境频繁安装卸载导致空间不足
  • 服务器环境需要定期维护
  • 个人电脑长期使用后性能下降

通过合理配置,你可以将其设置为定期任务,让系统始终保持最佳状态。完整脚本已在文章结尾提供,欢迎取用并根据自己的需求进行调整!

脚本源码

#!/bin/bash
# Linux 系统盘清理脚本
# 功能:清理系统垃圾文件、旧内核、缓存等以释放磁盘空间
# 注意:运行前请确保有管理员权限,部分操作可能需要root权限
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
# 检查是否为root用户
if [ "$(id -u)" -ne 0 ]; then
    echo -e "${YELLOW}警告: 建议使用root权限运行此脚本以执行所有清理操作${NC}"
    read -p "是否继续? (y/n) " -n 1 -r
    echo
    if [[ ! $REPLY =~ ^[Yy]$ ]]; then
        exit 1
    fi
fi
# 显示当前磁盘使用情况
echo -e "\n${GREEN}=== 当前磁盘使用情况 ===${NC}"
df -h /
# 清理APT缓存
echo -e "\n${GREEN}=== 清理APT缓存 ===${NC}"
sudo apt-get clean
sudo apt-get autoclean
# 移除不再需要的依赖包
echo -e "\n${GREEN}=== 移除不再需要的依赖包 ===${NC}"
sudo apt-get autoremove --purge
# 清理旧内核 (保留当前和上一个版本)
echo -e "\n${GREEN}=== 清理旧内核 ===${NC}"
current_kernel=$(uname -r)
echo "当前内核版本: $current_kernel"
# 更安全的旧内核清理方式
sudo apt-get purge $(dpkg -l linux-{image,headers}-* | awk '/^ii/{print $2}' | grep -vE "$current_kernel|$(echo $current_kernel | sed 's/-generic//')" | sort -u)
# 清理日志文件 (保留最近7天)
echo -e "\n${GREEN}=== 清理日志文件 ===${NC}"
find /var/log -type f -name "*.log" -mtime +7 -exec rm -f {} \;
journalctl --vacuum-time=7d
# 清理临时文件
echo -e "\n${GREEN}=== 清理临时文件 ===${NC}"
# 更安全的临时文件清理方式,不删除正在使用的文件
sudo find /tmp -type f -atime +7 -delete
sudo find /var/tmp -type f -atime +14 -delete
# 清理缩略图缓存
echo -e "\n${GREEN}=== 清理缩略图缓存 ===${NC}"
[ -d "$HOME/.cache/thumbnails" ] && rm -rf "$HOME/.cache/thumbnails"/*
# 清理浏览器缓存 (Chrome/Firefox)
echo -e "\n${GREEN}=== 清理浏览器缓存 ===${NC}"
for user in /home/*; do
    [ -d "$user" ] || continue
    echo "清理用户: $(basename "$user")"
    [ -d "$user/.cache/google-chrome/Default/Cache" ] && rm -rf "$user/.cache/google-chrome/Default/Cache"
    [ -d "$user/.cache/google-chrome/Default/Code Cache" ] && rm -rf "$user/.cache/google-chrome/Default/Code Cache"
    [ -d "$user/.cache/mozilla/firefox" ] && find "$user/.cache/mozilla/firefox" -name "cache2" -exec rm -rf {} +
done
# 清理旧的snap版本
echo -e "\n${GREEN}=== 清理旧的snap版本 ===${NC}"
if command -v snap &> /dev/null; then
    LANG=C snap list --all | awk '/disabled/{print $1, $3}' | while read -r snapname revision; do
        sudo snap remove "$snapname" --revision="$revision"
    done
fi
# 清理Docker无用数据
echo -e "\n${GREEN}=== 清理Docker无用数据 ===${NC}"
if command -v docker &> /dev/null; then
    read -p "确定要清理所有未使用的Docker数据吗? (y/n) " -n 1 -r
    echo
    if [[ $REPLY =~ ^[Yy]$ ]]; then
        docker system prune -af
    fi
fi
# 查找大文件 (大于100MB)
echo -e "\n${GREEN}=== 查找大文件(大于100MB) ===${NC}"
find / -xdev -type f -size +100M -exec ls -lh {} \; 2>/dev/null | sort -k5 -rh | head -n 20
# 显示清理后的磁盘使用情况
echo -e "\n${GREEN}=== 清理后磁盘使用情况 ===${NC}"
df -h /
echo -e "\n${GREEN}清理完成!${NC}"

image.gif



如果你对区块链内容感兴趣可以查看我的专栏:小试牛刀-区块链

感谢您的关注和收藏!!!!!!

image.gif 编辑

目录
相关文章
|
2月前
|
Ubuntu Linux
计算机基础知识:linux系统怎么安装?
在虚拟机软件中创建一个新的虚拟机,并选择相应操作系统类型和硬盘空间大小等参数。将下载的 ISO 镜像文件加载到虚拟机中。启动虚拟机,进入安装界面,并按照步骤进行安装。安装完成后,可以在虚拟机中使用 Linux 系统。
|
12天前
|
存储 安全 Unix
七、Linux Shell 与脚本基础
别再一遍遍地敲重复的命令了,把它们写进Shell脚本,就能一键搞定。脚本本质上就是个存着一堆命令的文本文件,但要让它“活”起来,有几个关键点:文件开头最好用#!/usr/bin/env bash来指定解释器,并用chmod +x给它执行权限。执行时也有讲究:./script.sh是在一个新“房间”(子Shell)里跑,不影响你;而source script.sh是在当前“房间”里跑,适合用来加载环境变量和配置文件。
208 9
|
Ubuntu Linux 网络安全
Linux系统初始化脚本
一款支持Rocky、CentOS、Ubuntu、Debian、openEuler等主流Linux发行版的系统初始化Shell脚本,涵盖网络配置、主机名设置、镜像源更换、安全加固等多项功能,适配单/双网卡环境,支持UEFI引导,提供多版本下载与持续更新。
115 0
Linux系统初始化脚本
|
12天前
|
存储 Shell Linux
八、Linux Shell 脚本:变量与字符串
Shell脚本里的变量就像一个个贴着标签的“箱子”。装东西(赋值)时,=两边千万不能有空格。用单引号''装进去的东西会原封不动,用双引号""则会让里面的$变量先“变身”再装箱。默认箱子只能在当前“房间”(Shell进程)用,想让隔壁房间(子进程)也能看到,就得给箱子盖个export的“出口”戳。此外,Shell还自带了$?(上条命令的成绩单)和$1(别人递进来的第一个包裹)等许多特殊箱子,非常有用。
68 2
|
1月前
|
算法 Linux Shell
Linux实用技能:打包压缩、热键、Shell与权限管理
本文详解Linux打包压缩技巧、常用命令与原理,涵盖.zip与.tgz格式操作、跨系统传文件方法、Shell运行机制及权限管理,助你高效使用Linux系统。
Linux实用技能:打包压缩、热键、Shell与权限管理
|
2月前
|
缓存 监控 Linux
Linux系统清理缓存(buff/cache)的有效方法。
总结而言,在大多数情形下你不必担心Linux中buffer与cache占用过多内存在影响到其他程序运行;因为当程序请求更多内存在没有足够可用资源时,Linux会自行调整其占有量。只有当你明确知道当前环境与需求并希望立即回收这部分资源给即将运行重负载任务之前才考虑上述方法去主动干预。
778 10
|
1月前
|
数据采集 监控 Shell
无需Python:Shell脚本如何成为你的自动化爬虫引擎?
Shell脚本利用curl/wget发起请求,结合文本处理工具构建轻量级爬虫,支持并行加速、定时任务、增量抓取及分布式部署。通过随机UA、异常重试等优化提升稳定性,适用于日志监控、价格追踪等场景。相比Python,具备启动快、资源占用低的优势,适合嵌入式或老旧服务器环境,复杂任务可结合Python实现混合编程。
|
2月前
|
安全 Linux 数据安全/隐私保护
为Linux系统的普通账户授予sudo访问权限的过程
完成上述步骤后,你提升的用户就能够使用 `sudo`命令来执行管理员级别的操作,而无需切换到root用户。这是一种更加安全和便捷的权限管理方式,因为它能够留下完整的权限使用记录,并以最小权限的方式工作。需要注意的是,随意授予sudo权限可能会使系统暴露在风险之中,尤其是在用户不了解其所执行命令可能带来的后果的情况下。所以在配置sudo权限时,必须谨慎行事。
328 0
|
2月前
|
Ubuntu Linux 开发者
国产 Linux 发行版再添新成员,CutefishOS 系统简单体验
当然,系统生态构建过程并不简单,不过为了帮助国产操作系统优化生态圈,部分企业也开始用国产操作系统替代 Windows,我们相信肯定会有越来越多的精品软件登录 Linux 平台。
122 0
|
2月前
|
Ubuntu 安全 Linux
Linux系统入门指南:从零开始学习Linux
Shell脚本是一种强大的自动化工具,可以帮助您简化重复的任务或创建复杂的脚本程序。了解Shell脚本的基本语法和常用命令,以及编写和运行Shell脚本的步骤,将使您更高效地处理日常任务。
214 0