Hi 你好,欢迎访问!登录
当前位置:首页 - 运维笔记 - 合优网 - 正文 君子好学,自强不息!

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

2025-02-17合优网祥技术支持540°c
A+ A-

命令作用

  • 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 删除,空间不会释放。

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


123云盘分享

更新时间:2025年02月17日 13:43:57
      选择打赏方式
    微信赞助

    打赏

    QQ钱包

    打赏

    支付宝赞助

    打赏

    未定义标签

    发表评论

    取消回复

    选填

    必填

    必填

    选填

    请拖动滑块解锁
    >>


      用户登录