码迷,mamicode.com
首页 > 系统相关 > 详细

linux系统网络命令(三)

时间:2015-07-15 23:00:55      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:linux、netstat、ss

一、netstat监控网络命令

1、命令简介

       netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态、以及网络协议相关的信息。


2、常用选项

-t  显示TCP传输协议的连线状况。

-u 显示UDP传输协议的连线状况。

-l  显示监控中的服务器的Socket。

-a 显示所有连线中的Socket。

-p 显示正在使用Socket的程序识别码和程序名称。

-n 直接使用IP地址,而不通过域名服务器。

-r  显示路由表,类似于route或ip route show。

-e 显示详细的套接字(sockets)信息。


3、命令参数的联合使用

3.1、禁用反向域名解析,加快查询速度

        默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。

[root@hpf-linux ~]# netstat -tan    //查看当前系统以tcp状态的所有链接用IP显示,同时在加上p可以显示进程号。
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0     52 192.168.1.110:22            192.168.1.104:60376         ESTABLISHED
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN

3.2、只列出监听中的连接

        任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。

[root@hpf-linux ~]# netstat -tunl    //查看当前系统以tcp、udp装态的链接用IP显示并只显示监听状态的连接。
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State      
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      
tcp        0      0 :::22                       :::*                        LISTEN      
tcp        0      0 ::1:25                      :::*                        LISTEN

3.3、显示内核路由信息

        使用 -r 选项打印内核路由信息。打印出来的信息与 route 命令输出的信息一样。我们也可以使用 -n 选项禁止域名解析。

[root@hpf-linux ~]# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
[root@hpf-linux ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

3.4、 获取进程名、进程号以及用户 ID

        查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。例如:httpd 服务开启80端口,如果你要查看 http 服务是否已经启动,或者 http 服务是由 apache 还是 nginx 启动的,这时候你可以看看进程名。

[root@hpf-linux ~]# netstat -lnpt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name  
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1113/sshd          
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1324/master        
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      1744/nginx          
tcp        0      0 :::22                       :::*                        LISTEN      1113/sshd          
tcp        0      0 ::1:25                      :::*                        LISTEN      1324/master

        使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名。相比进程名和进程号而言,查看进程的拥有者会更有用。使用 -ep 选项可以同时查看进程名和用户名。 

[cangls@hpf-linux ~]$ netstat -ltpe
(No info could be read for "-p": geteuid()=505 but you should be root.)   //注意用户
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode      PID/Program name  
tcp        0      0 *:ssh                       *:*                         LISTEN      root       8879       -                  
tcp        0      0 localhost:smtp              *:*                         LISTEN      root       9221       -                  
tcp        0      0 *:ssh                       *:*                         LISTEN      root       8882       -                  
tcp        0      0 localhost:smtp              *:*                         LISTEN      root       9223       -

        上面列出 TCP 协议下的监听套接字,同时显示进程信息和一些额外信息。 这些额外的信息包括用户名和进程的索引节点号。注意 - 假如你将 -n 和 -e 选项一起使用,User 列的属性就是用户的 ID 号,而不是用户名。 

[cangls@hpf-linux ~]$ netstat -ltne
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode     
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      0          8879       
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      0          9221       
tcp        0      0 :::22                       :::*                        LISTEN      0          8882       
tcp        0      0 ::1:25                      :::*                        LISTEN      0          9223


二、ss监控命令

1、ss命令简介

        ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。同时也是用来替代netstat命令的命令安装包为iproute。


2、常用选项

-t  显示TCP传输协议的连线状况。

-u 显示UDP传输协议的连线状况。

-l  显示监控中的服务器的Socket。

-a 显示所有连线中的Socket。

-p 显示正在使用Socket的程序识别码和程序名称。

-n 直接使用IP地址,而不通过域名服务器。

-r  显示路由表,类似于route或ip route show。

-e 显示详细的套接字(sockets)信息。

-m 显示套接连接使用的内存信息 


3、使用举例

3.1、显示 Sockets 摘要

[root@hpf-linux ~]# ss -s
Total: 115 (kernel 132)
TCP:   7 (estab 2, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 3
Transport Total     IP        IPv6
*  132       -         -        
RAW  0         0         0        
UDP  0         0         0        
TCP  7         5         2        
INET  7         5         2        
FRAG  0         0         0

3.2、查看当前系统以tcp状态的所有链接用IP显示

[root@hpf-linux ~]# ss -tan
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port
LISTEN     0      128                      :::22                      :::*    
LISTEN     0      128                       *:22                       *:*    
LISTEN     0      100                     ::1:25                      :::*    
LISTEN     0      100               127.0.0.1:25                       *:*    
LISTEN     0      128                       *:80                       *:*    
ESTAB      0      52            192.168.1.110:22           192.168.1.104:62515
ESTAB      0      0             192.168.1.110:22           192.168.1.104:60376

3.3、查看进程使用的socket用数字显示:

[root@hpf-linux ~]# ss -lnp
State       Recv-Q Send-Q       Local Address:Port         Peer Address:Port 
LISTEN      0      128                     :::22                     :::*      users:(("sshd",1113,4))
LISTEN      0      128                      *:22                      *:*      users:(("sshd",1113,3))
LISTEN      0      100                    ::1:25                     :::*      users:(("master",1324,13))
LISTEN      0      100              127.0.0.1:25                      *:*      users:(("master",1324,12))
LISTEN      0      128                      *:80                      *:*      users:(("nginx",2054,6),("nginx",2055,6))

3.4、显示所有已建立的22端口连接:

[root@hpf-linux ~]# ss -tan -o state established ‘( sport = :22 )‘
Recv-Q Send-Q             Local Address:Port               Peer Address:Port
0      52                 192.168.1.110:22                192.168.1.104:62515  timer:(on,249ms,0)
0      0                  192.168.1.110:22                192.168.1.104:60376  timer:(keepalive,62min,0)

3.5、查看当前机器的80端口被谁占用:

[root@hpf-linux ~]# ss -lnp src :80
State      Recv-Q Send-Q        Local Address:Port          Peer Address:Port 
LISTEN     0      128                       *:80                       *:*      users:(("nginx",2054,6),("nginx",2055,6))
[root@hpf-linux ~]# ss -lnp |grep 80
LISTEN     0      128                       *:80                       *:*      users:(("nginx",2054,6),("nginx",2055,6))


为什么ss比netstat快:

        netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多。


参考:

http://linux.cn/thread/12158/1/1/

http://www.cnblogs.com/peida/archive/2013/03/11/2953420.html


本文出自 “粗茶淡饭” 博客,请务必保留此出处http://cuchadanfan.blog.51cto.com/9940284/1675134

linux系统网络命令(三)

标签:linux、netstat、ss

原文地址:http://cuchadanfan.blog.51cto.com/9940284/1675134

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!