lsof
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件
常用的参数列表:
lsof filename 显示打开指定文件的所有进程
lsof -a 表示两个参数都必须满足时才显示结果
lsof -c string 显示COMMAND列中包含指定字符的进程所有打开的文件
lsof -u username 显示所属user进程打开的文件
lsof -g gid 显示归属gid的进程情况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长
lsof -d FD 显示指定文件描述符的进程
lsof -n 不将IP转换为hostname,缺省是不加上-n参数
lsof -i 用以显示符合条件的进程情况
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 --> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4地址
service --> /etc/service中的 service name (可以不只一个)
port --> 端口号 (可以不只一个)
来自 linux之netstat与lsof
使用
lsof -i:端口号,查看某端口的占用情况
比如查看5005号端口使用情况,lsof -i:5005,如下图
$ lsof -i:5005
输出参数
COMMAND:进程的名称
PID: 进程标识符
USER:进程所有者
FD:文件描述符
TYPE:文件类型
DEVICE:指定磁盘的名称
SIZE/OFF:文件的大小
NODE:索引节点
NAME:打开文件的确切名称
netstat
netstat是系统自带的命令,用于显示网络状态
利用 netstat 指令可得知整个 Linux 系统的网络情况
常见参数
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
来自 linux之netstat与lsof
使用
netstat -tunlp|grep 端口号
比如查看5005号端口使用情况,netstat -tunlp|grep 5005,如下图
netstat -tunlp|grep 5005
netstat -tunlp
输出参数
输出的参数包括:
Proto:显示连接使用的网络传输协议,主要为tcp和udp
Recv-Q:网络接收队列
Send-Q:网路发送队列
Local Address:本地连接地址
Foreign Address:和本地建立连接的地址
State:端口状态,内部地址与外部地址的连接状态,主要有监听( LISTEN )和建立(ESTABLISED)
PID/Program name: 进程标识符/进程名称
总结
其实这两个命令还是有不同之处的
lsof可以看到进程所有者、文件类型等信息,更为全面,命令也稍微简单一些