linux系统网络命令(三)

一、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 选项禁用域名解析功能。

[[email protected] ~]# 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 选项列出正在监听的套接字。

[[email protected] ~]# 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 选项禁止域名解析。

[[email protected] ~]# 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
[[email protected] ~]# 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 启动的,这时候你可以看看进程名。

[[email protected] ~]# 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 选项可以同时查看进程名和用户名。

[[email protected] ~]$ 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 号,而不是用户名。

[[email protected] ~]$ 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 摘要

[[email protected] ~]# 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显示

[[email protected] ~]# 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用数字显示:

[[email protected] ~]# 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端口连接:

[[email protected] ~]# 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端口被谁占用:

[[email protected] ~]# 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))
[[email protected] ~]# 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

时间: 2024-10-11 13:41:29

linux系统网络命令(三)的相关文章

linux系统网络命令(二)

一.linux 下iptoute2网络配置工具 前面我们已经学习使用了ifconfig.route两个关于网络配置的命令,这两个命令和netstat.arp等命令是属于net-tools的rpm的安装包,现在已经有了一个新的工具包用来取代上面的命令,安装包为iproute,包内包含了新的命令ip.ss,这俩命令很强大通过下图就可以看出. 二.linux 下ip命令的使用 1.ip命令简介 ip是iproute软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具,例如ifconfi

linux系统网络命令(五)

一.pidof命令 1.简介 pidof命令用于找出正在运行的程序的进程PID(find the process ID of a running program.),程序可以是一个二进制执行程序,也可以是一个shell脚本. 2.常用选项 -s:仅返回一个进程号: -c:仅显示具有相同"root"目录的进程: -x:显示由脚本开启的进程: -o:指定不显示的进程ID. 3.使用举例 3.1.找出nginx程序的进程PID,如果有多个就会全部列出,nginx不能是shell脚本名称. [

linux系统网络命令(七)

一.sar命令 1.简介 sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备.sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态.它的特点是可以连续对系统取样,获得大量的取样数据.取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小. 2.常用选项 -A  显示所有历史数据,通过读取/var/log/sar 目录下的所有文件,并把它们分门别类的显示出来: -b  通过设备的I/O中断读取设置的吞吐率: -B 报

linux系统网络命令(四)

一.pstree命令 1.命令简介 以树状图显示进程,只显示进程的名字,且相同进程合并显示. 2.常用选项及举例 2.1.以树状图显示进程,还显示进程PID: [[email protected] ~]# pstree -p init(1)─┬─auditd(937)───{auditd}(938)         ├─crond(1322)         ├─dbus-daemon(1041)         ├─master(1312)─┬─pickup(1485)         │  

linux系统网络命令(六)

一.vmstat命令 1.简介 vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.CPU活动进行监控.他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析.vmstat 工具提供了一种低开销的系统性能观察方式.因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结果. 2.命令格式 vmstat [-a] [-n] [-S uni

Linux系统初学-第三课 Linux网络配置

Linux系统初学-第三课 Linux网络配置 1.动态IP配置 配置文件路径 /etc/sysconfig/network-scripts/ ls查看网卡eth0,其中HWADDR值得获取:ifconfig eht0 | grep HWaddr,保存之后,service network restart. c BOOTPROTO 网络配置参数,BOOTPROTO=dhcp 动态IP,BOOTPROTO=static 静态IP,BOOTPROTO=none 无(不指定) NETMASK 网络掩码,

[Linux][VMWare] 学习笔记之安装Linux系统-网络配置

最近开始折腾Linux,在本机装了个VMWare和Centos,装完之后虚拟机里面的OS可以上网,但是使用SecureCRT连接不上虚拟机,开始折腾这个网络. vmware安装好以后,会自动添加两张网卡(vmnet1和vmnet8),中间网卡),整个机器的结构就可以抽象成:虚拟机系统(虚拟机网卡vmnet0)--(vmnet1 vmnet8),中间网卡)--实际系统网卡 vmware的网卡设置的几种方式: 1. Bridged(桥接)方式     用这种方式,虚拟系统的IP可设置成与本机系统在同

Linux常用网络命令

网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看 linux 服务器 ip 地址,管理服务器网络配置,通过 telnet 和 ethernet 建立与 linux 之间的网络链接,查看 linux 的服务器信息等.下面让我们看看在 Linux 下的网络和监控命令的使用. 1. hostname hostname 没有选项,显示主

Linux基本命令 网络命令

网络和监控命令类似于这些: hostname, ping, ifconfig, iwconfig, netstat, nslookup, traceroute, finger, telnet, ethtool 用于查看 linux 服务器 ip 地址,管理服务器网络配置,通过 telnet 和 ethernet 建立与 linux 之间的网络链接,查看 linux 的服务器信息等.下面让我们看看在 Linux 下的网络和监控命令的使用. 1. hostname hostname 没有选项,显示主