抚州市网站建设_网站建设公司_门户网站_seo优化
2026/1/8 20:29:29 网站建设 项目流程

服务器运维:Linux 磁盘查看 & 清理常用命令

一、整体使用思路(先看全局,再清理)

  • 第一步:看整个磁盘使用情况(df)
  • 第二步:看具体哪个目录占得多(du、ncdu 等)
  • 第三步:按类型清理:
    • 系统缓存 / 日志 / 旧内核 / 包管理器缓存
    • 应用日志、临时文件
    • 用户自己的大文件(日志、镜像、备份、下载等)
      可以用一个小流程图来概括:

开始: 磁盘空间不足

df -h 查看整体使用

du 或 ncdu 找最大目录

是系统位置?

系统缓存/日志/内核/包缓存清理

用户目录/应用日志/临时文件 清理

定期维护任务
如 journalctl/vacuum
logrotate/apt autoclean

再次 df/du 检查效果

下面展开具体命令。


二、查看磁盘使用情况(“看”)

1. df:查看文件系统整体使用情况

  • 查看所有挂载点的使用情况 :
    df-h
    • -h:human-readable(K/M/G)
    • 会显示每个挂载点:总容量、已用、可用、使用百分比、挂载点路径
  • 只看本地的文件系统(不显示 tmpfs 等):
    df-hT -x tmpfs -x devtmpfs
    • -T:显示文件系统类型(ext4、xfs 等)
    • -x:排除某些类型
  • 查看某个目录所在的文件系统使用情况:
    df-h /var /home
    Filesystem Size Used Avail Use% Mounted on /dev/sda2 50G 32G 16G 67% /

2. du:查看目录/文件占用的空间

  • 查看当前目录下各一级子目录的大小:
    du-h --max-depth=1
    • -h:人类可读
    • –max-depth=1:只看一层
  • 按大小排序,找出最大的几个目录(非常常用):
    du-h --max-depth=1|sort-hr|head-n10
    • sort -hr:按数字逆序(大在前)且按人类可读格式(100M/1G)
    • head -n 10:前 10 行【turn0search15】【turn0search16】
  • 查看某个目录的总大小:
    du-sh /var/log
    • -s:summary,只看总计

3. lsblk / fdisk -l:查看磁盘和分区

  • 列出块设备及挂载点:
    lsblk -f
    • -f:会显示文件系统类型、UUID、挂载点等
  • 查看详细分区信息(需 root):
    sudofdisk-l

4. 其他小工具

  • ncdu:交互式的磁盘使用分析工具(很直观)
    sudoncdu /
    • 使用方向键进入目录,按 d 删除文件/目录
  • pydf:一个带彩色的 df 替代工具
    pydf
  • baobab(图形化磁盘分析工具,GNOME 桌面
    baobab

三、找出大文件/目录(“找”)

1. du 排序法(最常用)

  • 找出当前目录下占用最大的 10 个目录/文件:
    du-ah.|sort-hr|head-n10
    • -a:包含文件
  • 指定目录,比如 /var 下:
    du-ah /var2>/dev/null|sort-hr|head-n10

2. find + size 法(按文件大小查找)

  • 查找大于 100M 的文件(从根目录开始,会有些慢,可换成具体路径):
    sudofind/ -type f -size +100M2>/dev/null
  • 查找 /home 下大于 500M 的文件并显示大小:
    find/home -type f -size +500M -execdu-sh{}\;2>/dev/null|sort-hr|head-n10
    逻辑:
    • -type f:只要文件
    • -size +500M:大于 500M
    • -exec du -sh {} ;:对每个文件执行 du -sh,显示大小

四、系统层面的常见清理(“系统清理”)

1. systemd 日志(journald)

默认 systemd 日志可能会越来越大,可以限制大小或保留时间:

  • 将日志限制到最大 300M:
    sudojournalctl --vacuum-size=300M
  • 只保留最近 10 天的日志:
    sudojournalctl --vacuum-time=10d

查看当前日志占用:

sudojournalctl --disk-usage

2. 包管理器缓存(以 Debian/Ubuntu 为例)

Ubuntu/Debian 中的 apt 会缓存大量 .deb 包:

  • 清理已卸载软件的依赖包(不再需要的包):
    sudoaptautoremove
  • 清理本地软件包缓存(/var/cache/apt/archives):
    sudoaptclean
    sudoaptautoclean
    • clean:删除所有缓存包
    • autoclean:只删除过期的旧版本包
  • 删除旧内核(谨慎操作,至少保留一个可用的内核):
    sudoaptautoremove --purge

3. 旧内核(更通用的方式)

查看已安装内核:

dpkg -l'linux-*'|sed'/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

(比较复杂,一般是包管理器自动清理)
更安全的方式是通过包管理器清理旧内核(如 apt autoremove,或对应发行版的命令)。

4. 系统临时目录 /tmp、/var/tmp

  • 清理 /tmp(一般重启会自动清理,也可以手动):
    sudorm-rf /tmp/*
    注意:不要删 /tmp 本身目录,只删里面的内容。
  • 清理 /var/tmp(通常保留更久,需谨慎确认内容):
    sudorm-rf /var/tmp/*

5. 日志轮转 /var/log(logrotate)

通常系统通过 logrotate 来管理 /var/log 下的日志,可以手动触发轮转或检查配置:

  • 手动执行轮转:
    sudologrotate-f /etc/logrotate.conf
  • 查看/编辑配置:
    sudoless/etc/logrotate.confsudols/etc/logrotate.d/

常见做法是在配置中设置:

  • rotate 保留份数
  • compress 压缩旧日志
  • maxsize 单个日志最大大小

6. 用户回收站(桌面环境)

  • 如果是图形桌面环境,回收站一般在:
    • ~/.local/share/Trash/
    • 或 ~/.Trash/
      清理(谨慎):
    rm-rf ~/.local/share/Trash/files/*rm-rf ~/.local/share/Trash/info/*

五、删除/清理文件的常用命令(“删”)

1. 基本删除命令

  • 删除文件:
    rm文件名
  • 删除目录及内容(递归、强制):
    rm-rf 目录名

注意:rm -f 不再提示,一定确认路径正确。

2. 按时间/名称/条件批量删除(find + rm)

  • 删除 /var/log 下 30 天前修改的 .log 文件(先不加 -delete 测试):
    sudofind/var/log -name"*.log"-type f -mtime +30
    确认无误后:
    sudofind/var/log -name"*.log"-type f -mtime +30 -delete
  • 删除 1 小时前修改过的文件(-cmin:按状态更改时间分钟):
    find/path -type f -cmin +60
  • 按名字包含某字符串删除(如包含 “chrome” 的文件):
    find.-type f -name'*chrome*'-delete

3. 删除大量文件时的注意事项

某些目录包含数百万个文件时,直接rm -rf会非常慢,甚至失败【turn0search5】:

  • 尝试使用 find + delete:
    find目录 -type f -deletefind目录 -type d -empty -delete
  • 或用 rsync “空目录”覆盖的方式(进阶用法):
    mkdir/tmp/emptyrsync-a --delete /tmp/empty/ 要清空的目录/

六、不同发行版的“一键清理”工具(可选)

  • Ubuntu / Debian 系:
    sudoaptautoremovesudoaptclean
  • Fedora / CentOS / RHEL 系(dnf/yum):
    sudodnf clean allsudodnf autoremove
  • openSUSE(zypper):
    sudozypperclean
  • Arch Linux:
    sudopacman -Sc# 清理未安装包的缓存# 或sudopaccache -r# 使用 paccache 脚本清理旧版本缓存

七、安全检查与定期维护建议

  1. 清理前一定要做的事:
    • 确认路径(多看几眼,尤其是带 / 的全局路径)
    • 大规模删除前先“只列出不删除”(find 不加 -delete、rm 不加 -f)
    • 对重要数据先备份
  2. 建议定期维护:
    • 使用 crontab 定期:
      • 清理临时文件
      • 对日志做 journalctl --vacuum-time
      • 运行 apt/yum/dnf autoremove 等
  3. 示例 crontab(每周日凌晨 2 点检查一次磁盘):
    编辑:
    crontab-e
    加入:
    0 2 * * 0 df -h >> /var/log/disk_usage.log
    把 df 结果写到日志,方便事后查看历史。

八、一个快速速查表

  • 查看整体使用:df -h
  • 查看某个目录占用:du -sh /path
  • 找最大目录:du -h --max-depth=1 | sort -hr | head
  • 找大文件:find /path -type f -size +100M
  • 清理 systemd 日志:journalctl --vacuum-size=300M
  • Debian/Ubuntu 清理包缓存:apt clean && apt autoclean && apt autoremove
  • 按时间删除旧日志:find /var/log -name “*.log” -mtime +30 -delete
  • 清理 /tmp:rm -rf /tmp/*
  • 清理回收站(用户):rm -rf ~/.local/share/Trash/files/*

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询