Posts Tagged ‘lsof

本文转载自黑客志 (这是一个多人协作的群体Blog,旨在为国内开发者提供新鲜和高质量的黑客文章,文章主要来源为 Hacker News。) 原文地址:Unix调试的瑞士军刀:lsof / 原作者: @Yuanyi Zhang 这是“你应该知道的Unix和Linux命令”系列的第三篇,在这篇文章中,我会介绍lsof这个工具,如果说netcat是进行网络诊断的瑞士军刀,那么 lsof 就是 Unix 调试的瑞士军刀。 Lsof 是遵从Unix 哲学的典范,它只做一件事情,并且做的相当完美——它可以列出某个进程打开的所有文件信息。打开的文件可能是普通的文件,目录,NFS文件,块文件,字符文件,共享库,常规管道,明明管道,符号链接,Socket流,网络Socket,UNIX域Socket,以及其它更多。因为Unix系统中几乎所有东西都是文件,你可以想象lsof该有多有用。 你可以看看这系列文章第一篇对pipe viewer的介绍,如果你对这篇文章感兴趣,那你应该订阅我的RSS Feed(译者注:也别忘了订阅黑客志 。 如何使用lsof? 这篇文章中我会尽力列举我能想到的所有lsof的用法,让我们先从最简单的开始(或许你已经知道了),然后逐渐增加复杂度: 列出所有打开的文件 # lsof 不带任何参数运行lsof会列出所有进程打开的所有文件。 找出谁在使用某个文件 # lsof /path/to/file 只需要执行文件的路径,lsof就会列出所有使用这个文件的进程,你也可以列出多个文件,lsof会列出所有使用这些文件的进程。 你也可以一次制定多个文件: # lsof /path/to/file1 /path/to/file2 递归查找某个目录中所有打开的文件 # lsof +D /usr/lib 加上+D参数,lsof会对指定目录进行递归查找,注意这个参数要比grep版本慢: # lsof | grep ‘/usr/lib’ 之所以慢是因为+D首先查找所有的文件,然后一次性输出。 列出某个用户打开的所有文件 # lsof -u pkrumins -u选项限定只列出所有被用户pkrumins打开的文件,你可以通过逗号指定多个用户: # [...]


top