netstat命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知有哪些网络连接正在运作。使用时如果不带参数,netstat显示活动的 TCP 连接。
语法
netstat [-a][-e][-n][-o][-p Protocol][-r][-s][Interval][1]
参数或选项 | 说明 |
---|---|
-a或–all | 显示所有连线中的Socket; |
-n或–numeric | 直接使用ip地址,而不通过域名服务器; |
-p或–programs | 显示正在使用Socket的程序识别码和程序名称; |
-t或–tcp | 显示TCP传输协议的连线状况; |
-e或–extend | 显示网络其他相关信息; |
-u或–udp | 显示UDP传输协议的连线状况; |
-v或–verbose | 显示指令执行过程; |
-V或–version | 显示版本信息; |
-A<网络类型>或–<网络类型> | 列出该网络类型连线中的相关地址; |
-c或–continuous | 持续列出网络状态; |
-C或–cache | 显示路由器配置的快取信息; |
-F或–fib | 显示FIB; |
-g或–groups | 显示多重广播功能群组组员名单; |
-h或–help | 在线帮助; |
-i或–interfaces | 显示网络界面信息表单; |
-l或–listening | 显示监控中的服务器的Socket; |
-M或–masquerade | 显示伪装的网络连线; |
-N或–netlink或–symbolic | 显示网络硬件外围设备的符号连接名称; |
-o或–timers | 显示计时器; |
-r或–route | 显示Routing Table; |
-s或–statistice | 显示网络工作信息统计表; |
-w或–raw | 显示RAW传输协议的连线状况; |
-x或–unix | 此参数的效果和指定”-A unix”参数相同; |
–ip或–inet | 此参数的效果和指定”-A inet”参数相同。 |
下面举些实例,跟着操作加深理解
1. 列出所有端口情况
# 列出所有端口
netstat -a
# 列出所有TCP端口
netstat -at
# 列出所有UDP端口
netstat -au
从整体上看,Linux 网络性能调试工具Netstat命令的输出结果可以分为两个部分:第一部分:是Active Internet connections,称为有源TCP连接,在上面的输出结果中,这一部分没有内容,表示暂时还没有TCP连接。第二部分:是Active UNIX domain sockets,称为有源Unix域套接口。输出结果显示的是Unix域套接口的连接情况:
禁用反向域名解析,加快查询速度
默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。
netstat -ant
2. 列出所有处于监听状态的 Sockets
任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。
# 只显示监听端口
netstat -l
# 显示监听TCP端口
netstat -lt
# 显示监听UDP端口
netstat -lu
# 显示监听UNIX端口
netstat -lx
注意:不要使用 -a 选项,否则 netstat 会列出所有连接,而不仅仅是监听端口。
3. 显示每个协议的统计信息
# 显示所有端口的统计信息
netstat -s
# 显示所有TCP的统计信息
netstat -st
# 显示所有UDP的统计信息
netstat -su
4. 显示 PID 和进程名称
使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。
sudo netstat -p
5. 显示核心路由信息
使用 -r 选项打印内核路由信息,打印出来的信息与 route 命令输出的信息一样。我们也可以使用 -n 选项禁止域名解析。
netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 eth0
192.168.130.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
netstat -rn # 显示数字格式,不查询主机名称
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.130.1 0.0.0.0 UG 0 0 0 eth0
192.168.130.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
6. 通过进程关键词过滤查找进程
# 通过进程关键词过滤查找进程
netstat -anp | grep 进程关键词或端口
# 查看ssh进程
netstat -antp | grep ssh
# 显示结果:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 734/sshd
tcp 0 52 192.168.130.20:22 119.129.118.189:58737 ESTABLISHED 1846/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 734/sshd
# 查看进程也可以用ps命令
# 如 查看指定服务的进程号,如tomcat服务
ps aux|grep tomcat
# 查看端口为22的进程
netstat -antp | grep 22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 734/sshd
tcp 0 52 192.168.130.20:22 119.129.118.189:58737 ESTABLISHED 1846/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 734/sshd
# 查看所有进程和进程的服务id
netstat -anp
通常用于查看某个端口号下建立的连接数,如8080端口号下的连接数统计
netstat -anp|grep:8080|wc -l
7. 打印网络接口信息
netstat 也能打印网络接口信息,但单独使用-i
选项输出信息比较原始。将 -e
选项和 -i
选项搭配使用,可以输出用户友好的信息。 同ifconfig
输出的信息一样
netstat -ie
打印 active 状态的连接
active 状态的套接字连接用 “ESTABLISHED” 字段表示,所以我们可以使用 grep 命令获得 active 状态的连接:
netstat -atnp | grep ESTA
配合 watch 命令监视 active 状态的连接:
watch -d -n0 "netstat -atnp | grep ESTA"
查看服务是否在运行
如果你想看看 http,smtp 或 ntp 服务是否在运行,使用 grep。使用 grep 命令你可以查看 http 或 smtp 或其它任何你想查看的服务
sudo netstat -aple | grep ntp
由netstat -anp | grep tomcat
查找到某个进程的pid后,如果下一步想结束进程,可以使用kill命令
kill -15 pid 立即释放资源
kill -9 pid 不会立即释放资源
查看网卡信息
cat /sbin/ifconfig
查看cpu配置
cat /proc/cpuinfo
查看mem配置
cat /proc/meminfo
修改hosts配置
vim /etc/hosts
参考netstat 命令详解
netstat 的10个基本用法