下面是Linux lsof命令的详细作用与使用方法:
一、lsof命令的作用
lsof是一个用于列出系统打开文件的工具,它能够列出所有被打开的文件,以及每个文件被哪些进程所使用。通过lsof命令,我们可以快速查找出哪些文件被进程所占用,以及哪些进程打开了哪些文件。lsof命令的基本操作为:对被打开的各种文件进行查询、统计和输出,特别是对TCP、UDP等网络文件,其中提供的TCP网络连接查询功能非常强大。
二、lsof命令的使用方法
lsof命令的语法为:
lsof [参数] [文件或目录名]
使用lsof命令列出所有打开的文件:
lsof
使用lsof命令查看某个进程所打开的所有文件:
lsof -p 进程号
使用lsof命令查看那些TCP端口被进程所占用:
lsof -i TCP
使用lsof命令查看那些UDP端口被进程所占用:
lsof -i UDP
使用lsof命令查看那些文件被某个用户所占用:
lsof -u 用户名
使用lsof命令查看那些文件被某个程序所占用:
lsof -c 程序名
可以使用通配符来匹配文件名:
lsof /mnt/*
三、lsof命令的示例
- 查看Nginx占用的80端口信息
lsof -i:80
输出结果:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1114 root 6u IPv4 92448786 0t0 TCP *:http (LISTEN)
nginx 1115 nginx 6u IPv4 92448786 0t0 TCP *:http (LISTEN)
nginx 1116 nginx 6u IPv4 92448786 0t0 TCP *:http (LISTEN)
从中可以看出,Nginx正在监听80
端口。
- 查看当前用户所打开的文件列表
lsof -u $(whoami)
输出结果:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 15034 user1 cwd DIR 253,2 4096 424673177 /home/user1
bash 15034 user1 rtd DIR 253,0 4096 2 /
bash 15034 user1 txt REG 253,2 1112208 368746284 /bin/bash
bash 15034 user1 mem REG 253,0 3235144 3577507 /lib/x86_64-linux-gnu/libc-2.27.so
...
上述结果中,我们可以看到当前用户打开的部分文件。