lsof 使用
lsof -i
lsof -a -p pid
lsof 是一个非常强大的工具,用于列出系统上打开的文件,包括网络套接字、管道、设备等。以下是一些 lsof 的常用用法和参数说明: 1. 列出所有打开的文件 bash 复制代码 lsof 显示系统上所有打开的文件。 2. 显示某个用户打开的文件 bash 复制代码 lsof -u username 显示特定用户(如 username)打开的文件。 3. 显示某个进程打开的文件 bash 复制代码 lsof -p PID 显示特定进程(以 PID 表示)打开的文件。 4. 显示某个端口的占用情况 bash 复制代码 lsof -i :port 显示特定端口(如 port)的占用情况,常用于检查某个端口是否被占用。 5. 列出某个网络协议的打开文件 bash 复制代码 lsof -i tcp lsof -i udp 分别显示所有 TCP 或 UDP 连接。 6. 列出与某个网络地址相关的连接 bash 复制代码 lsof -i @hostname 显示与某个网络地址(如 hostname 或 IP 地址)相关的所有网络连接。 7. 列出某个设备的打开文件 bash 复制代码 lsof /dev/sda1 显示某个设备(如 /dev/sda1)上的所有打开文件。 8. 查找某个目录下的打开文件 bash 复制代码 lsof +D /path/to/directory 列出某个目录(如 /path/to/directory)及其子目录中所有打开的文件。 9. 列出与某个文件关联的进程 bash 复制代码 lsof /path/to/file 显示某个文件(如 /path/to/file)当前被哪些进程使用。 10. 列出某个命令打开的文件 bash 复制代码 lsof -c command 显示某个命令(如 command)的所有打开文件。 11. 查找特定端口和协议的网络连接 bash 复制代码 lsof -i tcp:80 显示所有使用 TCP 协议的 80 端口的网络连接。 12. 显示所有网络连接 bash 复制代码 lsof -i 显示所有打开的网络连接。 13. 刷新间隔显示网络连接 bash 复制代码 lsof -r 2 -i 每 2 秒刷新一次,显示当前网络连接的状态。这对于监控网络连接的变化非常有用。 14. 列出与某个进程有关的所有文件描述符 bash 复制代码 lsof -a -p PID 显示指定进程(PID)打开的所有文件,包括标准输入、输出等。 15. 显示某个端口上的所有监听进程 bash 复制代码 lsof -i :80 | grep LISTEN 显示正在监听指定端口(如 80 端口)的进程。 16. 强制关闭某个文件/连接 bash 复制代码 kill -9 $(lsof -t -i :port) 强制关闭占用某个端口(如 port)的所有进程。 17. 以脚本格式输出 bash 复制代码 lsof -F 使用脚本格式输出,便于进一步处理。 18. 列出未显示用户名的文件 bash 复制代码 lsof -l 列出 UID,而不是用户名。 总结 lsof 是一个功能丰富的命令,能够深入查看系统中的文件、网络连接等资源的使用情况,特别适合于排查端口占用、文件锁定等系统问题。