网络常用命令1——Netstat命令

netstat命令


1.常用命令

netstat -a  --列出所有端口
netstat -at  --列出所有tcp端口
netstat -t  --显示tcp连接的信息
netstat -u  --显示udp连接的信息
netstat -atn | grep ESTA  --列出ESTABLISHED状态的tcp端口
netstat -an | grep 3307  --列出端口的3307的网络连接情况
netstat -n   --看到各个连接的真实IP地址。
netstat -l     --显示处于监听状态的连接信息。
netstat -lt    --查看关于tcp连接的端口信息。
netstat -s   --根据协议统计所有连接信息。
netstat -r   --显示系统的核心路由信息。
netstat -i    --显示系统的网络接口列表。
netstat -ie   --显示系统各个网络接口的地址信息(相当于执行命令ifconfig)

------------------------------------------------------------------------------------------------------------------------------------------------
2.命令格式

        netstat 命令用于显示各种网络信息,如网络连接,路由表,接口状态 (Interface Statistics)等。 一般用于检验本机各端口的网络连接情况。

语  法:netstat [-acCeFghilMnNoprstuvVwx] [-A<网络类型>][--ip]

补充说明:利用netstat指令可让你得知整个Linux系统的网络情况。

参  数:
-a 或–all 显示所有连线中的Socket。
-A <网络类型>或–<网络类型> 列出该网络类型连线中的相关地址。
-c 或–continuous 持续列出网络状态。
-C 或–cache 显示路由器配置的快取信息。
-e 或–extend 显示网络其他相关信息。
-F 或 –fib 显示FIB。
-g 或–groups 显示多重广播功能群组组员名单。
-h 或–help 在线帮助。
-i 或–interfaces 显示网络界面信息表单。
-l 或–listening 显示监控中的服务器的。Socket。
-M 或–masquerade 显示伪装的网络连线。
-n 或–numeric 直接使用IP地址,而不通过域名服务器。
-N 或–netlink或–sym bolic显示网络硬件外围设备的符号连接名称。
-o 或–timers 显示计时器。
-p 或–programs 显示正在使用Socket的程序识别码和程序名称。
-r 或–route 显示 Routing Table。
-s 或–statistice 显示网络工作信息统计表。
-t 或–tcp 显示TCP 传输协议的连线状况。
-u或–udp 显示UDP传输协议的连线状况。
-v或–verbose 显示指令执行过程。
-V 或–version 显示版本信息。
-w或–raw 显示RAW传输协议的连线状况。
-x或–unix 此参数的效果和指定”-A unix”参数相同。
–ip或–inet 此参数的效果和指定”-A inet”参数相同。

------------------------------------------------------------------------------------------------------------------------------------------------
3.网络连接状态详解

共有12中可能的状态,前面11种是按照TCP连接建立的三次握手和TCP连接断开的四次挥手过程来描述的。
1)、LISTEN:首先服务端需要打开一个socket进行监听,状态为LISTEN—— The socket is listening for incoming connections. 侦听来自远方TCP端口的连接请求 。
--注:【socket: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。】

2)、 SYN_SENT:客户端通过应用程序调用connect进行active open。于是客户端tcp发送一个SYN以请求建立一个连接。之后状态置为SYN_SENT——The socket is actively attempting to establish a connection.在发送连接请求后等待匹配的连接请求 。

3)、 SYN_RECV:服务端应发出ACK确认客户端的 SYN,同时自己向客户端发送一个SYN.之后状态置为SYN_RECV——A connection request has been received from the network. 在收到和发送一个连接请求后等待对连接请求的确认 。

4)、ESTABLISHED:代表一个打开的连接,双方可以进行或已经在数据交互了。——The socket has an established connection. 代表一个打开的连接,数据可以传送给用户。

5)、 FIN_WAIT1:主动关闭(active close)端应用程序调用close,于是其TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态.——The socket is closed, and the connection is shutting down. 等待远程TCP的连接中断请求,或先前的连接中断请求的确认。

6)、CLOSE_WAIT:被动关闭(passive close)端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT.—— The remote end has shut down, waiting for the socket to close. 等待从本地用户发来的连接中断请求。

7)、FIN_WAIT2:主动关闭端接到ACK后,就进入了 FIN-WAIT-2 .——Connection is closed, and the socket is waiting for a shutdown from the remote end. 从远程TCP等待连接中断请求。

8)、LAST_ACK:被动关闭端一段时间后,接收到文件结束符的应用程 序将调用CLOSE关闭连接。这导致它的TCP也发送一个 FIN,等待对方的ACK.就进入了LAST-ACK .—— The remote end has shut down, and the socket is closed. Waiting for acknowledgement. 等待原来发向远程TCP的连接中断请求的确认 。

9)、TIME_WAIT:在主动关闭端接收到FIN后,TCP 就发送ACK包,并进入TIME-WAIT状态。—— The socket is waiting after close to handle packets still in the network.等待足够的时间以确保远程TCP接收到连接中断请求的确认。

10)、CLOSING:比较少见.——Both sockets are shut down but we still don’t have all our data sent. 等待远程TCP对连接中断的确认 。

11)、CLOSED:被动关闭端在接受到ACK包后,就进入了closed的状态。连接结束.——The socket is not being used. 没有任何连接状态 。

12)、UNKNOWN:未知的Socket状态。——The state of the socket is unknown。

注:
SYN: (同步序列编号,Synchronize Sequence Numbers)该标志仅在三次握手建立TCP连接时有效。表示一个新的TCP连接请求。
ACK: (确认编号,Acknowledgement Number)是对TCP请求的确认标志,同时提示对端系统已经成功接收所有数据。
FIN: (结束标志,FINish)用来结束一个TCP回话.但对应端口仍处于开放状态,准备接收后续数据。

-------------------------------------------------------------------------------------------------------------------

4.netstat命令输出结果分析

        netstat命令一般用来查看IP/Port占用情况,在网络程序员那里就可以用于检测数据发送/接收的端口是否正确。所以有必要看懂netstat命令输出结果的含义,下面给出三个典型的结果:



说明:Tserver01为一个UDP服务器测试程序,用于接收客户端的请求数据,然后回传另一组数据到客户端。

UDP ——传输协议为UDP协议

0.0.0.0:1234 ——本地IP/Port信息。

其中0.0.0.0有两种解释:

1、0.0.0.0代表本机上可用的任意地址。 比如0.0.0.0:1234表示本机上所有地址的1234端口,这样多ip计算机就不用重复显示了。
2、0.0.0.0为默认路由,即要到达不在路由表里面的网段的包都走0.0.0.0这条规则。

其实,我们可以“通用”理解为代表“本机地址”,1234在程序中体现为绑定的1234端口号

0.0.0.0:*——目的地址IP/Port信息。

其中0.0.0.0:*依然有两种解释:

1、此程序只作了绑定套接字操作,没有发送数据到目的地址,也就是没有目的地址。(此时可以是客户端已经发起并建立了与本服务器的通讯,也可以是客户端没有开启。总之是服务器没有向外部发出数据)

2、有目的地址,且发送了数据,但是由于是UDP传输,没有用connect函数建立两端连接。

而作为此测试程序就是:采用UDP协议,并在回传数据时采用了connect绑定客户端地址,但是客户端并没有开启,导致并没有建立连接。



由上述的知识,可以直接得到如下信息:

解释:

Tserver01程序采用UDP协议传输数据,绑定本地115.28.183.194:1234地址信息,并调用connect函数绑定目的地址221.212.116.50:9781建立了本地—>目的的连接。(至于是否发送数据并不知晓)

 

解释:

videoserver程序绑定本地套接字接受客户端X的连接(0.0.0.0:1234—>0.0.0.0:*),同时绑定了另一个套接字(IP/Port),并调用connnect函数与客户端Y建立连接并通信(X 和Y可以是同一个客户端)。

(PS:程序问题也就是在这里发现的,我们明明通过客户端2与服务器建立端口号是1234的NAT穿透,但是实际程序却用另一个没有被“穿透的”44268随机端口向客户端2发送数据,导致数据传输到内网后被丢弃。)


此命令此时简单的做一下本地/目的地址间是否正确的测试,而且是本地—>目的的单向测试,即目的客户端是否向本地服务器发起了连接是看不出来的(需要在客户端运行的主机进行测试。)如果需要更为详细的数据发送问题的测试,可以运行tcpdump命令进行抓包查看。推荐博客:http://blog.chinaunix.net/uid-11140746-id-2903933.html


--------------------------------------------------------------------------------------------------------------------------

5.实例

实例1:无参数使用

命令:netstat

输出:


代码如下:

[root@localhost ~]# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State  
tcp 0 268 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED  
udp 0 0 192.168.120.204:4371 10.58.119.119:domain ESTABLISHED  
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevd
unix 4 [ ] DGRAM 7337 /dev/log
unix 2 [ ] DGRAM 708823  
unix 2 [ ] DGRAM 7539  
unix 3 [ ] STREAM CONNECTED 7287  
unix 3 [ ] STREAM CONNECTED 7286  
[root@localhost ~]#

说明:

从整体上看,netstat的输出结果可以分为两个部分:

一个是Active Internet connections,称为有源TCP连接,其中"Recv-Q"和"Send-Q"指的是接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。

另一个是Active UNIX domain sockets,称为有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。

Proto显示连接使用的协议,RefCnt表示连接到本套接口上的进程号,Types显示套接口的类型,State显示套接口当前的状态,Path表示连接到套接口的其它进程使用的路径名。

套接口类型:

-t :TCP

-u :UDP

-raw :RAW类型

--unix :UNIX域类型

--ax25 :AX25类型

--ipx :ipx类型

--netrom :netrom类型

状态说明:

LISTEN:侦听来自远方的TCP端口的连接请求

SYN-SENT:再发送连接请求后等待匹配的连接请求(如果有大量这样的状态包,检查是否中招了)

SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认(如有大量此状态,估计被flood攻击了)

ESTABLISHED:代表一个打开的连接

FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认

FIN-WAIT-2:从远程TCP等待连接中断请求

CLOSE-WAIT:等待从本地用户发来的连接中断请求

CLOSING:等待远程TCP对连接中断的确认

LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认(不是什么好东西,此项出现,检查是否被攻击)

TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求的确认

CLOSED:没有任何连接状态

 

实例2:列出所有端口

命令:netstat -a

输出:


代码如下:

[root@localhost ~]# netstat -a
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State  
tcp 0 0 localhost:smux *:* LISTEN  
tcp 0 0 *:svn *:* LISTEN  
tcp 0 0 *:ssh *:* LISTEN  
tcp 0 284 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED  
udp 0 0 localhost:syslog *:*  
udp 0 0 *:snmp *:*  
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 708833 /tmp/ssh-yKnDB15725/agent.15725
unix 2 [ ACC ] STREAM LISTENING 7296 /var/run/audispd_events
unix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevd
unix 4 [ ] DGRAM 7337 /dev/log
unix 2 [ ] DGRAM 708823  
unix 2 [ ] DGRAM 7539  
unix 3 [ ] STREAM CONNECTED 7287  
unix 3 [ ] STREAM CONNECTED 7286  
[root@localhost ~]#  

说明:

显示一个所有的有效连接信息列表,包括已建立的连接(ESTABLISHED),也包括监听连接请(LISTENING)的那些连接。


实例3:显示当前UDP连接状况

命令:netstat -nu

输出:


代码如下:

[root@andy ~]# netstat -nu
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State  
udp 0 0 ::ffff:192.168.12:53392 ::ffff:192.168.9.120:10000 ESTABLISHED  
udp 0 0 ::ffff:192.168.12:56723 ::ffff:192.168.9.120:10000 ESTABLISHED  
udp 0 0 ::ffff:192.168.12:56480 ::ffff:192.168.9.120:10000 ESTABLISHED  
udp 0 0 ::ffff:192.168.12:58154 ::ffff:192.168.9.120:10000 ESTABLISHED  
udp 0 0 ::ffff:192.168.12:44227 ::ffff:192.168.9.120:10000 ESTABLISHED  
udp 0 0 ::ffff:192.168.12:36954 ::ffff:192.168.9.120:10000 ESTABLISHED  
udp 0 0 ::ffff:192.168.12:53984 ::ffff:192.168.9.120:10000 ESTABLISHED  
udp 0 0 ::ffff:192.168.12:57703 ::ffff:192.168.9.120:10000 ESTABLISHED  
udp 0 0 ::ffff:192.168.12:53613 ::ffff:192.168.9.120:10000 ESTABLISHED  
[root@andy ~]#  

实例4:显示UDP端口号的使用情况

命令:netstat -apu

输出:


代码如下:

[root@andy ~]# netstat -apu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name  
udp 0 0 *:57604 *:* 28094/java  
udp 0 0 *:40583 *:* 21220/java  
udp 0 0 *:45451 *:* 14583/java  
udp 0 0 ::ffff:192.168.12:53392 ::ffff:192.168.9.120:ndmp ESTABLISHED 19327/java  
udp 0 0 *:52370 *:* 15841/java  
udp 0 0 ::ffff:192.168.12:56723 ::ffff:192.168.9.120:ndmp ESTABLISHED 15841/java  
udp 0 0 *:44182 *:* 31757/java  
udp 0 0 *:48155 *:* 5476/java  
udp 0 0 *:59808 *:* 17333/java  
udp 0 0 ::ffff:192.168.12:56480 ::ffff:192.168.9.120:ndmp ESTABLISHED 28094/java  
udp 0 0 ::ffff:192.168.12:58154 ::ffff:192.168.9.120:ndmp ESTABLISHED 15429/java  
udp 0 0 *:36780 *:* 10091/java  
udp 0 0 *:36795 *:* 24594/java  
udp 0 0 *:41922 *:* 20506/java  
udp 0 0 ::ffff:192.168.12:44227 ::ffff:192.168.9.120:ndmp ESTABLISHED 17333/java  
udp 0 0 *:34258 *:* 8866/java  
udp 0 0 *:55508 *:* 11667/java  
udp 0 0 *:36055 *:* 12425/java  
udp 0 0 ::ffff:192.168.12:36954 ::ffff:192.168.9.120:ndmp ESTABLISHED 16532/java  
udp 0 0 ::ffff:192.168.12:53984 ::ffff:192.168.9.120:ndmp ESTABLISHED 20506/java  
udp 0 0 ::ffff:192.168.12:57703 ::ffff:192.168.9.120:ndmp ESTABLISHED 31757/java  
udp 0 0 ::ffff:192.168.12:53613 ::ffff:192.168.9.120:ndmp ESTABLISHED 3199/java  
udp 0 0 *:56309 *:* 15429/java  
udp 0 0 *:54007 *:* 16532/java  
udp 0 0 *:39544 *:* 3199/java  
udp 0 0 *:43900 *:* 19327/java  
[root@andy ~]#  

实例5:显示网卡列表

命令:netstat -i

输出:


代码如下:

[root@andy ~]# netstat -i
Kernel Interface table
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 151818887 0 0 0 198928403 0 0 0 BMRU
lo 16436 0 107235 0 0 0 107235 0 0 0 LRU
[root@andy ~]#  

实例6:显示组播组的关系

命令:netstat -g

输出:


代码如下:

[root@andy ~]# netstat -g
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 all-systems.mcast.net
eth0 1 all-systems.mcast.net
lo 1 ff02::1
eth0 1 ff02::1:ffff:9b0c
eth0 1 ff02::1
[root@andy ~]#  

实例7:显示网络统计信息

命令:netstat -s

输出:


代码如下:

[root@localhost ~]# netstat -s
Ip:
530999 total packets received
0 forwarded
0 incoming packets discarded
530999 incoming packets delivered
8258 requests sent out
1 dropped because of missing route
Icmp:
90 ICMP messages received
0 input ICMP message failed.
ICMP input histogram:
destination unreachable: 17
echo requests: 1
echo replies: 72
106 ICMP messages sent
0 ICMP messages failed
ICMP output histogram:
destination unreachable: 8
echo request: 97
echo replies: 1
IcmpMsg:
InType0: 72
InType3: 17
InType8: 1
OutType0: 1
OutType3: 8
OutType8: 97
Tcp:
8 active connections openings
15 passive connection openings
8 failed connection attempts
3 connection resets received
1 connections established
3132 segments received
2617 segments send out
53 segments retransmited
0 bad segments received.
252 resets sent
Udp:
0 packets received
0 packets to unknown port received.
0 packet receive errors
5482 packets sent
TcpExt:
1 invalid SYN cookies received
1 TCP sockets finished time wait in fast timer
57 delayed acks sent
Quick ack mode was activated 50 times
60 packets directly queued to recvmsg prequeue.
68 packets directly received from backlog
4399 packets directly received from prequeue
520 packets header predicted
51 packets header predicted and directly queued to user
1194 acknowledgments not containing data received
21 predicted acknowledgments
0 TCP data loss events
1 timeouts after reno fast retransmit
9 retransmits in slow start
42 other TCP timeouts
3 connections aborted due to timeout
IpExt:
InBcastPkts: 527777  

说明:

按照各个协议分别显示其统计数据。如果我们的应用程序(如Web浏览器)运行速度比较慢,或者不能显示Web页之类的数据,那么我们就可以用本选项来查看一下所显示的信息。我们需要仔细查看统计数据的各行,找到出错的关键字,进而确定问题所在。


实例8:显示监听的套接口

命令:netstat -l

输出:


代码如下:

[root@localhost ~]# netstat -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State  
tcp 0 0 localhost:smux *:* LISTEN  
tcp 0 0 *:svn *:* LISTEN  
tcp 0 0 *:ssh *:* LISTEN  
udp 0 0 localhost:syslog *:*  
udp 0 0 *:snmp *:*  
Active UNIX domain sockets (only servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 708833 /tmp/ssh-yKnDB15725/agent.15725
unix 2 [ ACC ] STREAM LISTENING 7296 /var/run/audispd_events
[root@localhost ~]#  

实例9:显示所有已建立的有效连接

命令:netstat -n

输出:


代码如下:

[root@localhost ~]# netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State  
tcp 0 268 192.168.120.204:22 10.2.0.68:62420 ESTABLISHED  
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevd
unix 4 [ ] DGRAM 7337 /dev/log
unix 2 [ ] DGRAM 708823  
unix 2 [ ] DGRAM 7539  
unix 3 [ ] STREAM CONNECTED 7287  
unix 3 [ ] STREAM CONNECTED 7286  
[root@localhost ~]#  

实例10:显示关于以太网的统计数据

命令:netstat -e

输出:


代码如下:

[root@localhost ~]# netstat -e
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode  
tcp 0 248 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED root 708795  
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ] DGRAM 1491 @/org/kernel/udev/udevd
unix 4 [ ] DGRAM 7337 /dev/log
unix 2 [ ] DGRAM 708823  
unix 2 [ ] DGRAM 7539  
unix 3 [ ] STREAM CONNECTED 7287  
unix 3 [ ] STREAM CONNECTED 7286  
[root@localhost ~]#

说明:

用于显示关于以太网的统计数据。它列出的项目包括传送的数据报的总字节数、错误数、删除数、数据报的数量和广播的数量。这些统计数据既有发送的数据报数量,也有接收的数据报数量。这个选项可以用来统计一些基本的网络流量)


实例11:显示关于路由表的信息

命令:netstat -r

输出:


代码如下:

[root@localhost ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
192.168.120.0 * 255.255.255.0 U 0 0 0 eth0
192.168.0.0 192.168.120.1 255.255.0.0 UG 0 0 0 eth0
10.0.0.0 192.168.120.1 255.0.0.0 UG 0 0 0 eth0
default 192.168.120.240 0.0.0.0 UG 0 0 0 eth0
[root@localhost ~]#  

实例12:列出所有 tcp 端口

命令:netstat -at

输出:
 

代码如下:

[root@localhost ~]# netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State  
tcp 0 0 localhost:smux *:* LISTEN  
tcp 0 0 *:svn *:* LISTEN  
tcp 0 0 *:ssh *:* LISTEN  
tcp 0 284 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED  
[root@localhost ~]#

实例13:统计机器中网络连接各个状态个数

命令:netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

输出:


代码如下:

[root@localhost ~]# netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
ESTABLISHED 1
LISTEN 3
[root@localhost ~]#  


实例14:把状态全都取出来后使用uniq -c统计后再进行排序

命令:netstat -nat |awk '{print $6}'|sort|uniq -c

输出:

 

代码如下:

[root@andy ~]# netstat -nat |awk '{print $6}'|sort|uniq -c
14 CLOSE_WAIT
1 established)
578 ESTABLISHED
1 Foreign
43 LISTEN
5 TIME_WAIT
[root@andy ~]# netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
576 ESTABLISHED
43 LISTEN
14 CLOSE_WAIT
5 TIME_WAIT
1 Foreign
1 established)
[root@andy ~]#

实例15:查看连接某服务端口最多的的IP地址

命令:netstat -nat | grep "192.168.120.20:16067" |awk '{print $5}'|awk -F: '{print $4}'|sort|uniq -c|sort -nr|head -20

输出:

 

代码如下:

[root@andy ~]# netstat -nat | grep "192.168.120.20:16067" |awk '{print $5}'|awk -F: '{print $4}'|sort|uniq -c|sort -nr|head -20
8 10.2.1.68
7 192.168.119.13
6 192.168.119.201
6 192.168.119.20
6 192.168.119.10
4 10.2.1.199
3 10.2.1.207
2 192.168.120.20
2 192.168.120.15
2 192.168.119.197
2 192.168.119.11
2 10.2.1.206
2 10.2.1.203
2 10.2.1.189
2 10.2.1.173
1 192.168.120.18
1 192.168.119.19
1 10.2.2.227
1 10.2.2.138
1 10.2.1.208
[root@andy ~]#  

实例16:找出程序运行的端口

命令:netstat -ap | grep ssh

输出:


代码如下:

[root@andy ~]# netstat -ap | grep ssh
tcp 0 0 *:ssh *:* LISTEN 2570/sshd  
tcp 0 0 ::ffff:192.168.120.206:ssh ::ffff:10.2.1.205:54508 ESTABLISHED 13883/14  
tcp 0 0 ::ffff:192.168.120.206:ssh ::ffff:10.2.0.68:62886 ESTABLISHED 20900/6  
tcp 0 0 ::ffff:192.168.120.206:ssh ::ffff:10.2.2.131:52730 ESTABLISHED 20285/sshd: root@no  
unix 2 [ ACC ] STREAM LISTENING 194494461 20900/6 /tmp/ssh-cXIJj20900/agent.20900
unix 3 [ ] STREAM CONNECTED 194307443 20285/sshd: root@no  
unix 3 [ ] STREAM CONNECTED 194307441 20285/sshd: root@no  
[root@andy ~]#  

实例17:在 netstat 输出中显示 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 248 192.168.120.204:ssh 10.2.0.68:62420 ESTABLISHED 15725/0  
[root@localhost ~]#  

说明:

netstat -p 可以与其它开关一起使用,就可以添加 “PID/进程名称” 到 netstat 输出中,这样 debugging 的时候可以很方便的发现特定端口运行的程序。


实例18:找出运行在指定端口的进程

命令:netstat -anpt | grep ':16064'

输出:


代码如下:

[root@andy ~]# netstat -anpt | grep ':16064'
tcp 0 0 :::16064 :::* LISTEN 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.201:6462 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:26341 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:32208 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:192.168.119.20:32207 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:51303 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:51302 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50020 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50019 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56155 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50681 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:50680 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:52136 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56989 ESTABLISHED 24594/java  
tcp 0 0 ::ffff:192.168.120.20:16064 ::ffff:10.2.1.68:56988 ESTABLISHED 24594/java  
[root@andy ~]#  

说明:

运行在端口16064的进程id为24596,再通过ps命令就可以找到具体的应用程序了。



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值