查看TCP端口监听程序netstat和lsof差异

经常需要查看服务器上端口(例如9006端口)占用情况,以及是被哪些程序监听的。Linux上有两个工具都可以完成我们的任务: netstat和lsof。下面就分别介绍下这两个工具的查看方法。

一、netstat
0、功能:查看网络状态(具体可见man netstat)。
1、安装:一般发行版Linux都自带,如果没有,Centos下可通过如下命令安装。

yum -y install net-tools

2、参数:

## 与路由有关的参数
netstat -[rn]
## 与网络接口有关的参数
netstat -[anlptuc]

# -a 列出全部连接状态
# -n 不使用主机名和服务名,使用IP + Port
# -l 仅列出已在监听的服务状态
# -p 列出PID和Program的文件名
# -t 仅列出TCP数据包的连接
# -u 仅列出UDP数据包的连接
# -c 可以设置几秒钟后自动跟新一次
# -r 列出路由表

3、查看端口9006是否被占用,及被占用程序。

netstat -anlp | grep 9006

上图共有7列,每列的参数说明见下图(从左往右分别为:该连接所使用的协议、接收队列、发送队列、服务端IP端口、客户端IP端口、连接状态、使用该连接的PID/Program Name):
注:上图一开始看成了6列,还以为grep去除了相同列【捂脸】。

如上图可以看到9006端口,是被python这个服务占用,PID为18007

# 根据查看的PID,查看具体服务信息
ps -ef | grep 18007

4、查看服务器上正在监听的服务连接

netstat -anlp

5、根据PID查端口

netstat -anlp | grep 18007

二、lsof
0、功能:lsof(list of file)列出服务器打开的文件
1、安装:如果提示lsof: command not found,可以用下面的命令安装

yum -y install lsof

2、参数:
3、查看端口9006是否被占用,及被占用程序。

lsof -i:9006

# 查看程序名使用ps
ps -ef | grep pid


4、根据PID查端口

lsof -i | grep 18007

参考:
《鸟哥的Linux私房菜-服务器架设篇》第5章 Linux中常用的网络命令 P138 P198

发表评论

电子邮件地址不会被公开。 必填项已用*标注