WEB开发网
开发学院操作系统Linux/Unix 使用 lsof 查找打开的文件 阅读

使用 lsof 查找打开的文件

 2006-08-26 08:12:16 来源:WEB开发网   
核心提示: 不常见的用法在前面的部分中,我们研究了 lsof 的基本用法,使用 lsof 查找打开的文件(7),即显示打开的文件和控制它们的进程之间的关系,当您想对系统进行一些烦琐的操作,清单 5 显示了一个 Linux 系统,其中意外地删除了 Apache 日志,而又不希望破坏别人重要的文档时,这种

不常见的用法

在前面的部分中,我们研究了 lsof 的基本用法,即显示打开的文件和控制它们的进程之间的关系。当您想对系统进行一些烦琐的操作,而又不希望破坏别人重要的文档时,这种方法很有帮助。您还可以使用相同的方法执行一些高难度的 UNIX 操作。

恢复删除的文件

当 UNIX 计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹。管理错误也可能导致意外删除重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。有时可以恢复这些文件,并且 lsof 可以为您提供帮助。

当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录条目。

前面曾在转到 /proc 目录部分中说过,通过在适当的目录中进行查找,您可以访问进程的文件描述符。在随后的内容中,您看到了 lsof 可以显示进程的文件描述符和相关的文件名。您能明白我的意思吗?

但愿它真的这么简单!当您向 lsof 传递文件名时,比如在 lsof /file/I/deleted 中,它首先使用 stat() 系统调用获得有关该文件的信息,不幸的是,这个文件已经被删除。在不同的操作系统中,lsof 可能可以从核心内存中捕获该文件的名称。清单 5 显示了一个 Linux 系统,其中意外地删除了 Apache 日志,我正使用 grep 工具查找是否有人打开了该文件。

清单 5. 在 Linux 中使用 lsof 查找删除的文件

# lsof | grep error_log
httpd   2452   root  2w   REG    33,2   499  3090660
          /var/log/httpd/error_log (deleted)
httpd   2452   root  7w   REG    33,2   499  3090660
          /var/log/httpd/error_log (deleted)
... more httpd processes ...

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:使用 lsof 查找

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接