跳转至

lsof命令

lsof(List Open Files)是一个在Unix、Linux和类Unix系统上非常有用的命令,它用于列出系统中当前打开的文件。由于在Unix和Linux系统中,几乎一切都是文件(包括设备和网络套接字),lsof命令变得非常强大和多用途。以下是一些常见的lsof用法:

  1. 列出所有打开的文件:仅输入lsof命令会列出系统中所有打开的文件。
  2. 按照用户筛选lsof -u username会列出特定用户打开的文件。
  3. 查找特定进程打开的文件lsof -p pid会列出特定进程ID(PID)打开的文件。
  4. 查看某个端口的使用情况lsof -i :port可以查看哪些进程正在使用特定的网络端口。
  5. 列出某个目录下被打开的文件lsof +D /path/to/directory会显示在指定目录下所有被打开的文件。
  6. 查找打开某个文件的进程lsof /path/to/file会列出打开特定文件的所有进程。
  7. 显示网络连接lsof -i用于显示所有网络连接。
  8. 列出所有UNIX域套接字lsof -U用于查看所有UNIX域套接字。
  9. 组合使用多个选项:你可以组合使用多个选项,例如lsof -u user -i来查找特定用户打开的网络连接。
  10. 查看特定类型的文件lsof -t type,其中type可以是REG(常规文件)、DIR(目录)、CHR(字符设备)、BLK(块设备)等。

这些是lsof命令输出中各列的意义:

  1. COMMAND:显示打开文件的进程的命令名或程序名。
  2. PID:表示打开该文件的进程的进程标识号(Process ID)。
  3. TID:线程ID(Thread ID)。如果输出中包含这一列,它表示特定线程而不是整个进程打开了文件。
  4. USER:显示打开文件的进程的所属用户。
  5. FD:文件描述符。它是一个用于表示进程打开的文件的标记。这个标记可以是一个数字(如1,2,3...),也可以是以下特殊字符之一:
  6. cwd:表示当前工作目录。
  7. txt:表示程序代码本身。
  8. mem:表示内存映射文件,通常是共享库或程序的一部分。
  9. rtd:表示根目录。
  10. DEL:表示已删除的文件。
  11. TYPE:文件的类型,例如:
  12. DIR:目录
  13. REG:常规文件
  14. CHR:字符设备
  15. BLK:块设备
  16. FIFO:管道
  17. SOCK:套接字
  18. DEVICE:显示文件所在的设备号。通常对于磁盘文件,这代表文件系统的设备。
  19. SIZE/OFF:对于普通文件,这是文件的大小。对于某些特殊文件,如网络套接字或管道,这可能表示一个偏移量或者不同的数据。
  20. NODE:文件的inode编号,这是一个文件系统中文件的唯一标识。
  21. NAME:文件的名称和路径,或者是设备、网络连接的详细信息。

lsof 命令,Linux lsof 命令详解:显示Linux系统当前已打开的所有文件列表 lsof -p pid - Linux 命令搜索引擎 (wangchujiang.com)