Linux工具之lsof命令详解
大约 2 分钟
Linux工具之lsof命令详解
基本概念
lsof(List Set Open Files)是一个用于查看系统中当前打开文件的命令。在类Unix系统中,几乎所有事物都被视为文件,包括常规文件、目录、设备文件、套接字、管道等。因此,lsof 不仅可以查看正在使用的文件,还可以查看使用网络连接、设备和其他资源的进程。下面我将详细介绍 lsof 的常用选项和用法。
基本语法
lsof [选项] [文件]
常用选项
1.查看所有打开的文件
lsof
这将列出系统中所有打开的文件。输出的每一行代表一个打开的文件,并包含以下列信息:
- COMMAND:打开文件的进程名。
- PID:进程ID。
- USER:进程的属主。
- FD:文件描述符,表示文件在进程中的引用方式(例如:cwd表示当前工作目录,txt表示程序代码,mem表示内存映射文件,0-9表示文件描述符号)。
- TYPE:文件类型(例如:DIR目录,REG常规文件,CHR字符设备,FIFO先进先出队列,SOCK套接字)。
- DEVICE:设备号。
- SIZE/OFF:文件大小或文件偏移。
- NODE:文件节点号。
- NAME:文件名或路径。
2.根据文件名查看使用它的进程
lsof /path/to/file
3.根据PID查看进程打开的文件
lsof -p PID
4.根据用户查看打开的文件
lsof -u 用户名
5.查看网络连接
lsof -i
你可以进一步指定协议和端口:
lsof -i TCP:80 # 查看所有HTTP(TCP端口80)连接
lsof -i UDP:53 # 查看所有DNS(UDP端口53)连接
6.根据命令名称查看文件
lsof -c 命令名
7.查看指定端口的进程
lsof -i :端口号
列出正在使用指定端口的进程。例如:
lsof -i :22 # 查看占用22端口的进程(通常是SSH服务)
8.查看UNIX域套接字
lsof -U
9.组合使用多个选项
你可以组合多个选项以达到更细致的过滤。例如,要查看用户root的进程sshd打开的所有文件:
lsof -u root -c sshd
Loading...