CentOS/Ubuntu 清理磁盘空间

#查看当前目录下各文件夹体积,使用命令:
du -sh *

#然后逐级查找大文件,使用删除命令:
rm -rf foldername

#删除固定日期之前的文件
find logs -type f -mtime +5 -exec rm {  } \;

#对于时间相关的参数,有以下补充:
#-amin n
#查找系统中最后N分钟访问的文件
#-atime n
#查找系统中最后n*24小时访问的文件
#-cmin n
#查找系统中最后N分钟被改变文件状态的文件
#-ctime n
#查找系统中最后n*24小时被改变文件状态的文件
#-mmin n
#查找系统中最后N分钟被改变文件数据的文件
#-mtime n
#查找系统中最后n*24小时被改变文件数据的文件
#使用 du 排查大文件夹(按占用大小排序)
du -h --max-depth=1 / | sort -hr | head -20

#进一步排查特定目录
du -h --max-depth=1 /var | sort -hr
du -h --max-depth=1 /usr | sort -hr

#查看哪些日志文件大
find /var/log -type f -size +10M

#查找大文件(>500MB)
find / -type f -size +500M -exec ls -lh {} \; | awk '{ print $NF ": " $5 }'
#立即清理系统systemd日志,保留3天
journalctl --vacuum-time=3d

#设置日志保留策略
#编辑 journald 配置文件:
vi /etc/systemd/journald.conf

#找到并修改以下几项(如没有则取消注释并设置):
SystemMaxUse=200M        # 总体最大占用空间
SystemKeepFree=100M      # 留给系统的保底空间
SystemMaxFileSize=50M    # 单个日志文件最大大小
SystemMaxFiles=5         # 日志文件最多保存几个

#保存后,重启 journald 服务生效:
systemctl restart systemd-journald

一键执行脚本

# 一键清理
curl -fsSL https://ishere.cn/system-space-optimize.sh \
  | sudo bash -s -- --yes

# 查看帮助
curl -fsSL https://ishere.cn/system-space-optimize.sh \
  | sudo bash -s -- --help


# 工作内容
#清理:
#	•	apt 缓存、旧包
#	•	systemd 日志(默认保留 7 天)
#	•	/tmp、/var/tmp
#	•	/root/.cache、/root/.magentic_ui 等
#自动迁移到 /data/system-moved(带软链接):
#	•	/home/gitlab-runner
#	•	/var/lib/docker
#	•	/var/log(默认不开启,需要你显式加参数才会迁移,因为略激进)
#自动检测:
#	•	如果目录已经是软链接 → 跳过

一键执行脚本(V2,迁移swapfile及限制journal日志)

# 执行默认配置
curl -fsSL https://ishere.cn/optimize-swap-journal.sh | sudo bash

默认行为:

  • swap 迁移到 /data/swapfile
  • swap 大小:8G
  • journal 限制:
    • 最大占用:200M
    • 保留磁盘空余:500M
    • 最大保留时长:3day
# 自定义参数示例(推荐)
curl -fsSL https://ishere.cn/optimize-swap-journal.sh | sudo bash -s -- \
  --swap-dir /data \
  --swap-size-gb 8 \
  --swap-file-name swapfile \
  --journal-max-use 200M \
  --journal-keep-free 500M \
  --journal-max-retention 3day

支持的参数

参数默认值说明
–swap-dir/data新 swapfile 存放目录
–swap-size-gb8swap 大小(GB)
–swap-file-nameswapfileswap 文件名
–journal-max-use200Mjournal 最大空间占用
–journal-keep-free500Mjournal 保留磁盘余量
–journal-max-retention3dayjournal 最长保留时间

# 模拟运行(不会修改系统)
curl -fsSL https://ishere.cn/optimize-swap-journal.sh | bash -s -- --dry-run

脚本执行完成后可手动检查

swapon --show
journalctl --disk-usage
df -h
cat /etc/fstab

一键执行脚本(V3,迁移/var/log至数据盘)

# 正式执行
curl -fsSL https://ishere.cn/optimize-move-log.sh | sudo bash
# 预览(dry-run,不改系统)
curl -fsSL https://ishere.cn/optimize-move-log.sh | bash -s -- --dry-run

系统健康检查脚本(只读,不操作系统)

curl -fsSL https://ishere.cn/system-disk-health-check.sh | sudo bash

专门用来检查:

  • 看「系统盘 /」还剩多少空间
  • 看 /var、/var/log 谁最肥
  • 查有没有 (deleted) 但仍被进程占用 的日志文件(重点是 rsyslog / journald)
  • 看 swap 使用率是否过高
  • 看 /var/log 是否已经迁移到数据盘(bind mount)

Leave a Comment

Your email address will not be published.

*

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理