Linux命令:lsof - 列出打开的文件及其信息
lsof命令是list open files的缩写,该命令用于列出当前系统上所有已经打开的文件。
Linux系统一切皆文件,不仅仅包括普通的数据文件,还有网络套接字、设备文件、管道、命名空间等
常用参数:
- -a:逻辑AND,多个-lsof选项之间需满足所有条件。
- -b:显示IPv4/IPv6缓存和统计信息。
- -c <进程名>:列出指定名称的进程所打开的文件。
- -d <文件描述符号>:仅显示指定文件描述符对应的文件。
- -g:显示进程组信息。
- -i [46] [protocol][@hostname|:portnumber]:列出所有网络连接信息,可以筛选TCP或UDP协议以及特定主机或端口。
- -p <进程ID>:显示指定进程ID的进程所打开的文件。
- -u <用户名>:列出指定用户打开的所有文件。
- -n:禁止DNS解析,显示IP地址而非主机名。
- -t:只输出进程ID,常用于与其他命令结合使用。
- -h:显示帮助信息。
- -L:列出符号链接到的文件而不是符号链接本身。
- -r <间隔秒数>:连续列出,每隔指定秒数刷新输出结果。
- -F:使用格式输出,便于其他程序分析。
输出格式:
COMMAND     PID   TID    USER   FD      TYPE             DEVICE   SIZE/OFF       NODE NAME
systemd       1          root  cwd       DIR              253,0        265         64 /
- COMMAND:执行命令的程序名称,即进程的命令行全称
- PID:进程id
- TID:线程id
- USER:拥有该进程的用户账号名称。
- FD:文件描述符
- TYPE:文件类型。如DIR(目录)、REG(常规文件)、CHR(字符设备)、BLK(块设备)、UNIX(Unix域套接字)、FIFO(命名管道)、IPv4/IPv6套接字等
- DEVICE:设备号
- SIZE/OFF:大小/偏移量,具体含义取决于文件类型。如果是普通文件,通常是文件的大小;如果是设备文件或套接字等,可能显示不同的信息。
- NODE:索引节点(inode)号,是文件系统中标识文件的唯一编号。
- NAME:打开文件的名称,也就是文件的路径。对于网络套接字,可能是IP地址和端口号的组合形式
使用示例:
# 列出系统中所有打开的文件
lsof
# 查找哪个进程正在使用特定文件
lsof /path/to/somefile
# 列出某个进程打开的所有文件
lsof -p <pid>
# 查找指定用户打开的文件
lsof -u <username>
# 查找监听指定端口的进程
lsof -i :<port>
# 查找监听指定端口的进程时指定协议
lsof -i tcp:<port> -i udp:<port>
# 显示所有网络连接
lsof -i -n
# 查找某个应用程序打开的所有文件
lsof -c <application>
# 查找已经被删除但仍然被进程占用的文件
lsof +L1
# 按照文件描述符查找文件
# 0 标准输入(stdin)
# 1 标准输出(stdout)
# 2 标准错误输出(stderr)
lsof -d 0,1,2
# 列出所有打开的网络文件描述符(网络套接字)
lsof -i
# 列出某个目录及其子目录下所有被打开的文件
lsof +D /path/to
# 连续列出文件状态的变化,每5秒刷新一次
lsof -r 5
# 将输出结果格式化以便于后续处理
lsof -F
Linux命令系列:

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号