nestat:打印网络连接、路由表、接口统计信息、伪装连接和多播成员,使用最多的是打印网络连接信息。
一、常见的参数:
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。
二、返回字段定义:
[root@localhost app]# netstat -anp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 2717/master tcp 0 0 10.10.1.132:6379 0.0.0.0:* LISTEN 9717/redis-server 1 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1874/nginx: master tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1291/sshd tcp 0 0 10.10.1.132:6379 10.0.20.3:62257 ESTABLISHED 9717/redis-server 1 tcp 0 0 10.10.1.132:6379 10.10.1.113:51015 ESTABLISHED 9717/redis-server 1
Proto:代表协议(tcp、tcp6、udp、udp6)
Recv-Q:数据已经在本地接收缓冲,但是还没有recv()
Send-Q:对方没有收到的数据或者说没有Ack的,还是本地缓冲区
Local Address: 本地IP:本地端口
Foreign Address: 远程IP:远程端口
State:链接状态(监听状态:LISTEN、建立连接状态:ESTABLISHED等)
PID:进程PID号
Program name:程序名字
三、常用的netstat命令:
1. 查询进程号所占用的端口号: netstat -anp | grep 进程号
下图中,可以看到监控状态为LISTEN表示已经被占用,最后一列显示被服务redis-server占用,查看具体端口号6379,只要有如图这一行就表示被占用了。
!!此处注意,图中如果显示的是LISTENING并不表示端口被占用,不要和LISTEN混淆哦,查看具体端口时候,必须要看到tcp,端口号,LISTEN那一行,才表示端口被占用
[root@localhost app]# netstat -anp | grep 9717 tcp 0 0 10.10.1.132:6379 0.0.0.0:* LISTEN 9717/redis-server 1 tcp 0 0 10.10.1.132:6379 10.0.20.3:62257 ESTABLISHED 9717/redis-server 1 tcp 0 0 10.10.1.132:6379 10.10.1.113:51015 ESTABLISHED 9717/redis-server 1 tcp 0 0 10.10.1.132:6379 10.0.20.3:62252 ESTABLISHED 9717/redis-server 1
2. 查看端口号对应的进程,用于排查端口号是否被占用:netstat -tunlp | grep 端口号
-l 表示查找的是监听状态的(listen)的进程,非监听的不会被查询出来
[root@localhost app]# netstat -tunlp | grep 8080 tcp6 0 0 :::8080 :::* LISTEN 10841/java
3. 查看端口号的使用情况:netstat -anp | grep 端口号
[root@localhost app]# netstat -anp |grep 8080 tcp6 0 0 :::8080 :::* LISTEN 10841/java tcp6 0 0 127.0.0.1:8080 127.0.0.1:44093 ESTABLISHED 10841/java tcp6 0 0 127.0.0.1:44093 127.0.0.1:8080 ESTABLISHED 11061/java
4. 显示pid和进程:netstat -pt
[root@localhost ~]# netstat -pt Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 10.10.1.132:6379 10.10.1.114:50267 ESTABLISHED 9717/redis-server 1 tcp 0 0 10.10.1.132:6379 10.0.20.3:60342 ESTABLISHED 9717/redis-server 1 tcp6 0 0 10.10.1.132:ddi-tcp-1 10.0.10.3:55131 ESTABLISHED 9147/java tcp6 0 0 10.10.1.132:46743 192.168.99.113:mysql ESTABLISHED 12349/java tcp6 0 0 10.10.1.132:47033 10.10.1.132:6379 ESTABLISHED 10841/java tcp6 0 0 10.10.1.132:us-srv 10.10.1.124:34405 FIN_WAIT2 -
5. 列出所有处于监听状态的 Sockets:
netstat -l #只显示监听端口 netstat -lt #只列出所有监听 tcp 端口 netstat -lu #只列出所有监听 udp 端口 netstat -lx #只列出所有监听 UNIX 端口