当前位置:首页 > 运维笔记 > 合优网 > 正文内容

Linux服务器 lsof | grep delete 命令解释

命令作用

  • lsof(List Open Files)会列出系统中所有被进程打开的文件。

  • grep delete 用于过滤结果,仅显示已被标记为“已删除”但仍在被进程占用的文件。


使用场景

当文件被删除(如通过 rm 命令),但仍有进程在占用它时,文件实际仍占用磁盘空间(df 显示空间未释放,但 ls 看不到文件)。此命令可定位这类“幽灵文件”。


输出示例

复制
COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
java     1234   alice   1w   REG   8,1    100MB  123456 /tmp/log.txt (deleted)
nginx    5678    root    3u   REG   0,5    200MB  789012 /var/log/nginx/error.log (deleted)
  • PID:占用文件的进程 ID。

  • COMMAND:进程名称。

  • USER:运行进程的用户。

  • FD:文件描述符(如 1w 表示标准输出写入)。

  • NAME:文件路径,末尾的 (deleted) 表示文件已被删除但未释放。


如何解决问题?

  1. 释放空间

    • 重启进程:例如 systemctl restart nginx(根据进程名操作)。

    • 终止进程kill -9 PID(替换 PID 为实际进程号)。

    • 清空文件:如果进程允许,可重定向文件描述符(如 echo "" > /proc/PID/fd/FD)。

  2. 预防措施

    • 删除文件前,确保没有进程在写入或读取它。

    • 对日志类文件,使用日志轮转工具(如 logrotate),避免直接 rm


常见案例

  • 日志文件:服务(如 Nginx、Java)持续写入日志文件后,若直接 rm 删除,空间不会释放。

  • 临时文件:程序运行时创建的临时文件被误删,但进程仍在占用。


返回列表

上一篇:MySQL 无法启动问题 直接重装操作办法

没有最新的文章了...

“Linux服务器 lsof | grep delete 命令解释” 的以下内容与本文无关

简单说两句

访客

◎ 不想说话可以不说,说了便要负责!