lsof 查看打开的文件

lsof

列出所有打开的文件。

lsof输出各列信息的意义

  • COMMAND:进程的名称
  • PID:进程标识符
  • USER:进程所有者
  • FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等
    • cwd:表示应用程序的当前工作目录
    • RTD:根目录
    • txt:txt类型文件是程序代码,应用程序二进制文件本身或共享库
    • MEM:内存映射文件
    • u:表示该文件被打开并处于读取/写入模式,而不是只读 (r) 或只写 (w) 模式。
    • W:表示该应用程序具有对整个文件的写锁。该文件描述符用于确保每次只能打开一个应用程序实例。
    • R:读访问初始打开每个应用程序时,都具有三个文件描述符,从 0 到 2,分别表示标准输入、输出和错误流。所以大多数应用程序所打开的文件的FD都是从3开始。
  • TYPE:文件类型,如DIR、REG等
    • DIR:目录
    • REG:基本文件
    • CHR:字符特殊文件
    • FIFO:先进先出
    • UNIX:unix域套接字
  • DEVICE:指定磁盘的名称
  • SIZE:文件的大小
  • NODE:索引节点(文件在磁盘上的标识)
  • NAME:打开文件的确切名称

选项

  • -a:表示所有选项都必须满足时才显示结果。逻辑与。
  • -c string:显示COMMAND列中包含指定字符的进程打开的所有文件。
  • -u user:列出指定用户打开的文件。在用户名前面加^标识排除指定用户的。
  • -g gid:用户组gid所打开的文件信息。
  • -p pid:按pid搜索。进程号前面加^表示排除指定进程打开的文件。
  • -d fd:根据文件描述符列出对应文件信息。可以用-指定一个FD的开头范围。
  • +d dir:显示dir目录下被进程打开的文件。
  • +D dir:显示dir目录(包括子目录)下被进程打开的文件。(Ubuntu12.04下跟+d没区别)
  • -n:不将IP转换为hostname,缺省是不加-n选项的。
  • -s:列出打开文件的大小,如果没有大小,则留下空白。
  • -i [46] [protocol][@hostname|hostaddr] [:service|port]
    46:表示ipv4或ipv6。
    protocol:可以是TCP或UDP。
    hostname:因特网主机名。
    service/etc/service 文件中的service name,可以不止一个,可以用逗号,分隔多个。
    port:端口号,可以不止一个,可以用-表示一个端口范围,或用逗号,分隔多个。

举例

lsof -i :80,9000:查看80和9000端口的运行情况。

lsof -a -u php -i :80,9000:查看属于php用户的进程在80和9000端口的运行情况。

lsof filename:查看正在使用filename的进程。

lsof -c php -c nginx:列出多个进程(php、nginx)打开的文件信息。

lsof -i tcp:列出所有tcp连接信息。

lsof -d 2:根据文件描述符列出对应文件信息,此例显示文件描述符以2开头的文件信息。

lsof -d 2-4:根据文件描述符列出对应文件信息,此例显示文件描述符以2、3、4开头的文件信息。

lsof +d /dev/:列出/dev/目录的被打开的文件信息,不包括子目录下的。


欢迎关注我的微信公众号: coderbee笔记,可以更及时回复你的讨论。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据