经常需要查看服务器上端口(例如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
lsof -i | grep 18007
参考:
《鸟哥的Linux私房菜-服务器架设篇》第5章 Linux中常用的网络命令 P138 P198