lsof的详细用法及示例

2023-10-05 21:05:00
pjd
原创 342
摘要:lsof list open files

lsof是 Linux 系统上的一个命令行工具,它的名字是 "List Open Files" 的缩写。它用于列出当前系统中已经被打开的文件和文件描述符,包括网络连接、目录、设备文件等等。lsof可以显示哪些进程正在使用这些文件,以及它们是如何被打开的。

lsof常用于以下情况:

  • 查找哪个进程正在占用某个文件,以便在需要时释放或修改该文件。
  • 查看系统中哪些文件被打开,以便进行文件管理或诊断。
  • 查找哪个进程正在监听或连接到某个网络端口,用于网络故障排除和安全审查。

通过lsof,你可以获得有关系统资源使用情况的详细信息,这对于系统管理员和开发人员来说非常有用。


`lsof` 是一个功能强大的工具,具有丰富的选项和用法。以下是一些 `lsof` 的详细用法示例和常见选项:

**基本用法:**

1. **列出所有打开的文件和连接:**

   ```bash
   lsof
   ```

2. **查看某个进程的打开文件和连接:**

   ```bash
   lsof -p <PID>
   ```

   将 `<PID>` 替换为要查看的进程的实际进程ID。

3. **查看某个文件被哪些进程使用:**

   ```bash
   lsof /path/to/file
   ```

   将 `/path/to/file` 替换为要查询的文件路径。

4. **查看某个端口被哪些进程占用:**

   ```bash
   lsof -i :<port>
   ```

   将 `<port>` 替换为要查询的端口号。

**高级用法和选项:**

5. **查看某个目录下被哪些进程使用的文件:**

   ```bash
   lsof +D /path/to/directory
   ```

   将 `/path/to/directory` 替换为要查询的目录路径。

6. **查看某个用户打开的文件和连接:**

   ```bash
   lsof -u <username>
   ```

   将 `<username>` 替换为要查询的用户名。

7. **以用户友好的方式显示结果:**

   ```bash
   lsof -i -n -P
   ```

   这个命令会以更友好的方式显示网络连接信息,并禁用DNS解析。

8. **列出特定类型的文件或连接,例如仅显示IPv4连接:**

   ```bash
   lsof -i 4
   ```

   这将只显示IPv4连接。

9. **查看某个进程打开的文件的详细信息:**

   ```bash
   lsof -p <PID> -F
   ```

   这会以机器可读的格式显示文件描述符信息。

10. **查看UNIX域套接字连接:**

   ```bash
   lsof -U
   ```

   这将列出UNIX域套接字连接。

这些只是 `lsof` 的一些常见用法和选项示例,还有更多选项和功能可供探索,你可以使用 `man lsof` 命令来查看完整的 `lsof` 手册以获取更多详细信息。