Lsof全名为list open files,也就是列举系统中已经被打开的文件,通过lsof命令,就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。
显示使用文件的进程
#COMMAND:命令,进程的名称
#PID: 进程号
#USER:进程的所有者
#FD(文件描述符):#u表示该文件被打开并处于读取/写入模式
#r表示该文件被打开并处于只读模式
#w 表示该文件被打开并处于写入模式
#TYPE:文件类型,REG(regular)为普通文件
#DEVICE:指定磁盘的名称
#SIZE/OFF:文件的大小
#NODE:索引节点
#NAME:文件名称
显示指定进程所打开的文件
#lsof -c rsyslog 使用-c选项显示指定进程所打开的文件
显示指定进程号所打开的文件
#lsof -p 22 使用-p选项显示指定进程号所打开的文件
监听指定的协议,端口和主机等信息,显示符合条件的进程信息
相应的语法格式:
# lsof -i [4/6] [protocol] [@hostname] [:service | port]
其中个项的含义如下:
#46:4代表IPV4,6代表IPV6
#protocol:传输协议,可以是TCP或UDP
#hostname:主机名称或者IP地址
#service:进程的服务名,例如NFS,SSH等。
#port:系统中与服务对应的端口号。例如HTTP服务默认对应的端口号为80
$lsof -i #查看所有进程
$ lsof -i tcp #显示所有tcp网络连接的进程信息
$ lsof -i :22 #显示端口为22的进程,这条命令很常用
$ lsof -i xy