lsof 是一个非常强大的工具,用于列出系统中打开的文件(包括网络连接、设备、管道等)。以下是一些常用的 lsof 组合命令及其用途:
1. 列出某个用户打开的文件
lsof -u username
用途: 显示指定用户(
username)打开的所有文件。示例:
lsof -u root列出root用户打开的文件。
2. 列出某个进程打开的文件
lsof -p PID
用途: 显示指定进程 ID(
PID)打开的所有文件。示例:
lsof -p 1234列出进程 ID 为1234的文件。
3. 列出某个端口相关的连接
lsof -i :端口号
用途: 显示与指定端口相关的网络连接。
示例:
lsof -i :80列出所有与端口80相关的连接。
4. 列出所有网络连接
lsof -i
用途: 显示所有网络连接(TCP/UDP)。
示例:
lsof -i列出所有网络连接。
5. 列出某个协议的网络连接
lsof -i TCP lsof -i UDP
用途: 显示指定协议(TCP 或 UDP)的网络连接。
示例:
lsof -i TCP列出所有 TCP 连接。
6. 列出某个文件被哪些进程打开
lsof /path/to/file
用途: 显示打开指定文件的进程。
示例:
lsof /var/log/syslog列出打开/var/log/syslog的进程。
7. 列出某个目录被哪些进程打开
lsof +D /path/to/directory
用途: 显示打开指定目录的进程。
示例:
lsof +D /var/log列出打开/var/log目录的进程。
8. 列出所有 IPv4 或 IPv6 连接
lsof -i 4 # IPv4 lsof -i 6 # IPv6
用途: 显示所有 IPv4 或 IPv6 的网络连接。
示例:
lsof -i 4列出所有 IPv4 连接。
9. 列出某个命令打开的文件
lsof -c 进程名
用途: 显示指定进程名打开的文件。
示例:
lsof -c nginx列出所有nginx进程打开的文件。
10. 列出所有监听端口
lsof -i -sTCP:LISTEN
用途: 显示所有正在监听的端口。
示例:
lsof -i -sTCP:LISTEN列出所有监听状态的连接。
11. 列出某个用户的所有网络连接
lsof -u username -i
用途: 显示指定用户的所有网络连接。
示例:
lsof -u root -i列出root用户的所有网络连接。
12.列出所有打开文件的进程
lsof | more
用途: 列出系统中所有打开的文件(按需分页显示)。
示例:
lsof | more分页显示所有打开的文件。
13. 列出某个设备打开的文件
lsof /dev/sda1
用途: 显示打开指定设备的进程。
示例:
lsof /dev/sda1列出打开/dev/sda1的进程。
14. 列出所有已删除但仍被打开的文件
lsof | grep deleted
用途: 显示已被删除但仍被进程占用的文件。
示例:
lsof | grep deleted列出所有已删除但仍被打开的文件。
15. 组合查询
lsof -i TCP:80 -u root
用途: 显示
root用户打开的所有 TCP 端口80的连接。示例:
lsof -i TCP:80 -u root列出root用户的所有 TCP 80 端口连接。
16. 显示文件的详细信息
lsof -t /path/to/file
用途: 仅显示打开指定文件的进程 ID(PID)。
示例:
lsof -t /var/log/syslog显示打开/var/log/syslog的进程 ID。
17. 列出所有打开的网络文件和设备
lsof -i -n -P
用途: 列出所有网络连接,禁用主机名和端口号解析。
示例:
lsof -i -n -P列出所有网络连接,直接显示 IP 和端口号。
18. 列出某个文件系统的打开文件
lsof +f -- /path/to/filesystem
用途: 显示指定文件系统中打开的文件。
示例:
lsof +f -- /列出根文件系统中打开的文件。
19. 列出所有打开的日志文件
lsof /var/log
用途: 显示所有打开的日志文件。
示例:
lsof /var/log列出/var/log目录下所有打开的文件。
20. 杀死占用某个端口的进程
kill -9 $(lsof -t -i :端口号)用途: 杀死占用指定端口的进程。
示例:
kill -9 $(lsof -t -i :8080)杀死占用端口8080的进程。
总结
lsof 的常用组合命令可以帮助你快速定位文件、网络连接、进程等信息。根据具体需求选择合适的组合即可。如果需要更详细的信息,可以查看 man lsof 或运行 lsof -h 获取帮助。




