linux未释放空间怎么看
linux未释放空间怎么看详细介绍
在 Linux 系统中,若发现磁盘空间未释放(例如删除文件后空间未恢复),可通过以下步骤排查和解决:
1.
基础磁盘空间检查
- 查看文件系统整体使用情况
使用df命令快速定位占用率高的挂载点:
bash若某个分区(如
/)使用率超过 80%,需进一步分析。 - 定位大文件 / 目录
使用du命令递归查找指定目录下的大文件:
bash--max-depth /path/to/directory/var/log
结合
sort和head筛选最大文件:
bash/注意隐藏文件(以
.开头)也可能占用大量空间。
2.
排查已删除但被进程占用的文件
- 查找被删除但未释放的文件
使用lsof命令列出所有被进程打开的已删除文件:
bashdeleted输出示例:
plaintexthttpd 1234 root 3w REG 8,1 10485760 123456 /tmp/access_log (deleted)其中
PID为进程 ID,FD为文件描述符(如3w)。 - 释放空间的两种方式
- 终止进程(适用于非关键进程):bash
PID - 清空文件内容(保留进程运行):bash
/proc/PID/fd/FD_NUM此操作不会删除文件,但会清空内容,进程后续写入将覆盖新数据。
- 终止进程(适用于非关键进程):bash
3.
清理临时文件和缓存
- 清理
/tmp目录
系统临时文件可能长期未清理,使用以下命令删除超过 7 天的文件:
bash/tmp f +7或配置
cron定时任务自动清理。 - 清理包管理缓存
- Debian/Ubuntu:bash
clean - CentOS/Fedora:bash
yum clean all
此外,删除旧内核包(如
linux-image-*)可释放大量空间。 - Debian/Ubuntu:bash
4.
检查文件系统错误
- 修复文件系统
若文件系统存在错误,可能导致空间计算异常。使用fsck检查并修复:bash/dev/sdX/dev/sdX
/dev/sdX /mnt
注意:根分区(
/)需在单用户模式或 Live CD 下操作。
5.
其他排查方向
- 磁盘配额限制
检查用户或组配额是否限制了空间使用:
bashrepquota /path/to/mountpointedquota username
若配额不足,需扩容或清理用户文件。
- Docker / 容器占用
检查 Docker 镜像和容器:
bashsystemimage prune
若容器日志未清理,可通过
docker logs --tail=0 --follow重置日志文件。
6.
总结操作流程
- 使用
df和du定位空间占用源。 - 通过
lsof查找被进程占用的已删除文件,根据场景选择终止进程或清空文件。 - 清理临时文件、日志和包缓存。
- 修复文件系统错误(必要时)。
- 检查配额或容器资源占用。
通过以上步骤,可系统性排查并解决 Linux 磁盘空间未释放的问题。在生产环境中操作时,建议先备份数据,并优先采用安全的方式(如清空文件)避免服务中断。