首页/系统/Linux 运维命令速查/lsof 定位已删除文件与磁盘占用
本包目录(613 条)
文件与目录76 条文本处理77 条网络命令82 条进程与作业69 条
磁盘与文件系统51 条
用户与权限44 条日志与排查40 条systemd 与服务42 条包管理34 条性能与监控48 条定时任务与计划50 条

lsof 定位已删除文件与磁盘占用

lsof 列出进程持有的文件、目录、socket 与设备句柄;磁盘「删了文件还不释放空间」、「谁占着这个目录」都靠它定位。

Linux 运维命令速查系统更新于 2026-10-12
用途列出进程打开的文件/端口/设备
语法lsof [选项] [路径|+d 目录|:端口]
所属lsof 软件包

经典用法

经典用法
lsof +L1 /var/log        # 找出已删除仍被持有的文件(空间不释放元凶)
lsof +D /data            # 递归列出目录下被打开的文件
lsof -p 1234             # 某进程打开的一切
lsof -i :8080            # 谁占用了 8080 端口
lsof /dev/sdb1           # 谁在用这个块设备
lsof +L1 输出的 SIZE/OFF 列常显示巨大值、NLINK 为 0,即典型 deleted 文件;重启相应服务即可释放。

易错点

  • lsof 全量扫描很慢且需 root 才能看全所有进程;定位删除文件优先 lsof +L1 <挂载点> 缩小范围
  • lsof +D 会遍历目录树,在海量文件目录上极慢;改用 fuser -v 或 /proc/<pid>/fd 直查更快

数据来源与参考

  • man 8 lsof

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌