【Linux】一步一步学Linux——netstat命令(166)
00. 目錄
文章目錄
- 00. 目錄
- 01. 命令概述
- 02. 命令格式
- 03. 常用選項
- 04. 參考示例
- 05. 附錄
01. 命令概述
netstat命令用于顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等。
從整體上看,netstat的輸出結果可以分為兩個部分:一個是Active Internet connections,稱為有源TCP連接,其中”Recv-Q”和”Send-Q”指%0A的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示軟件包正在隊列中堆積。這種情況只能在非常少的情況見到;另一個是Active UNIX domain sockets,稱為有源Unix域套接口(和網絡套接字一樣,但是只能用于本機通信,性能可以提高一倍)。
02. 命令格式
格式:netstat [選項] [參數]03. 常用選項
-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或--symbolic:顯示網絡硬件外圍設備的符號連接名稱; -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"參數相同。04. 參考示例
4.1 列出所有端口 (包括監聽和未監聽的)
[root@localhost ~]# netstat -a Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:mysql 0.0.0.0:* LISTEN4.2 列出所有的TCP端口
[root@localhost ~]# netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:mysql 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN4.3 列出所有的UDP端口
[root@localhost ~]# netstat -au Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:mdns 0.0.0.0:* udp 0 0 localhost:323 0.0.0.0:*4.4 顯示路由表信息
[root@localhost ~]# netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default gateway 0.0.0.0 UG 0 0 0 ens33 172.16.0.0 0.0.0.0 255.255.254.0 U 0 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 [root@localhost ~]#4.5 顯示網絡接口列表
[root@localhost ~]# netstat -i Kernel Interface table Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg ens33 1500 193158 0 0 0 7347 0 0 0 BMRU lo 65536 101 0 0 0 101 0 0 0 LRU virbr0 1500 0 0 0 0 0 0 0 0 BMU [root@localhost ~]#4.6 顯示已連接的TCP端口,以及PID
[root@localhost ~]# netstat -tpnl jActive Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1546/mysqld tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 608/rpcbind tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1363/dnsmasq tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 772/sshd tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 767/cupsd tcp6 0 0 :::111 :::* LISTEN 608/rpcbind tcp6 0 0 :::22 :::* LISTEN 772/sshd tcp6 0 0 ::1:631 :::* LISTEN 767/cupsd [root@localhost ~]# j4.7 顯示當前用戶UDP端口,直接使用IP
[root@localhost ~]# netstat -nu Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State [root@localhost ~]#4.8 顯示多重廣播功能群組組員
[root@localhost ~]# netstat -g IPv6/IPv4 Group Memberships Interface RefCnt Group --------------- ------ --------------------- lo 1 224.0.0.1 ens33 1 224.0.0.251 ens33 1 224.0.0.1 virbr0 1 224.0.0.251 virbr0 1 224.0.0.1 lo 1 ff02::1 lo 1 ff01::1 ens33 1 ff02::1:ffd5:68de ens33 1 ff02::1 ens33 1 ff01::1 virbr0 1 ff02::1 virbr0 1 ff01::1 virbr0-nic 1 ff02::1 virbr0-nic 1 ff01::1 [root@localhost ~]#4.9 只顯示監聽端口
[root@localhost ~]# netstat -l Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:mysql 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN4.10 只列出所有監聽 tcp 端口
[root@localhost ~]# netstat -lt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:mysql 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN tcp 0 0 localhost.locald:domain 0.0.0.0:* LISTEN4.11只列出所有監聽 udp 端口
[root@localhost ~]# netstat -lu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:mdns 0.0.0.0:* udp 0 0 localhost:323 0.0.0.0:*4.12 只列出所有監聽 UNIX 端口
[root@localhost ~]# netstat -lx Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 32140 @/tmp/.ICE-unix/1953 unix 2 [ ACC ] STREAM LISTENING 29533 @/tmp/dbus-Jvx5ygyU224.13 顯示所有端口的統計信息
[root@localhost ~]# netstat -s Ip:179136 total packets received0 forwarded0 incoming packets discarded179017 incoming packets delivered6995 requests sent out32 dropped because of missing route4.14 顯示TCP端口的統計信息
[root@localhost ~]# netstat -st IcmpMsg:InType0: 10OutType3: 2OutType8: 104.15 顯示UDP端口的統計信息
[root@localhost ~]# netstat -su IcmpMsg:InType0: 10OutType3: 2OutType8: 104.16 在netstat輸出中顯示 PID 和進程名稱
[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 96 localhost.localdoma:ssh 172.16.0.51:50412 ESTABLISHED 3560/sshd: deng [pr [root@localhost ~]#netstat -p可以與其它開關一起使用,就可以添加“PID/進程名稱”到netstat輸出中,這樣debugging的時候可以很方便的發現特定端口運行的程序。
4.17 顯示數字端口號,但是不影響主機或用戶名的解析
[root@localhost ~]# netstat -a --numeric-ports4.18 顯示數字形式的主機但是不影響端口或用戶名的解析
[root@localhost ~]# netstat -a --numeric-hosts4.19 顯示數字的用戶ID,但是不影響主機和端口名的解析
[root@localhost ~]# netstat -a --numeric-users4.20 持續顯示網絡信息
[root@localhost ~]# netstat -c Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State4.21顯示系統不支持的地址族
[root@localhost ~]# netstat --verbose netstat: no support for `AF IPX' on this system. netstat: no support for `AF AX25' on this system. netstat: no support for `AF X25' on this system. netstat: no support for `AF NETROM' on this system.4.22 顯示路由信息
[root@localhost ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 172.16.0.1 0.0.0.0 UG 0 0 0 ens33 172.16.0.0 0.0.0.0 255.255.254.0 U 0 0 0 ens33 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0 [root@localhost ~]#4.23 查找指定進程的網絡狀態信息
[root@localhost ~]# netstat -apn | grep ssh tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 772/sshd tcp 0 96 172.16.0.76:22 172.16.0.51:50412 ESTABLISHED 3560/sshd: deng [pr4.24 查找指定端口進程
[root@localhost ~]# netstat -apn | grep -w 22 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 772/sshd tcp 0 96 172.16.0.76:22 172.16.0.51:50412 ESTABLISHED 3560/sshd: deng [pr tcp6 0 0 :::22 :::* LISTEN 772/sshd [root@localhost ~]#4.25 顯示所有網絡接口信息
[root@localhost ~]# netstat -ie Kernel Interface table ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.16.0.76 netmask 255.255.254.0 broadcast 172.16.1.255inet6 fe80::16e5:9e6b:b4d5:68de prefixlen 64 scopeid 0x20<link>ether 00:50:56:26:d8:88 txqueuelen 1000 (Ethernet)RX packets 203226 bytes 59605454 (56.8 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 9213 bytes 5044661 (4.8 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 101 bytes 7127 (6.9 KiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 101 bytes 7127 (6.9 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255ether 52:54:00:d2:18:f4 txqueuelen 1000 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@localhost ~]#4.26 查看連接某服務端口最多的的IP地址
[root@localhost ~]# netstat -nat | grep "172.16.0.76:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20 1 172.16.0.51 [root@localhost ~]#4.27 查看3306 端口(mysql)的鏈接數
[root@localhost ~]# netstat -apn | grep -c 3306 1 [root@localhost ~]#4.28 統計TCP連接
[root@localhost ~]# netstat -n | awk '/^tcp/{++S[$NF]} END {for (a in S) print a, S[a]}' ESTABLISHED 1 [root@localhost ~]#4.29 統計TCP各種狀態
[root@localhost ~]# netstat -nt | grep -e 127.0.0.1 -e 0.0.0.0 -e ::: -v | awk '/^tcp/ {++state[$NF]} END {for(i in state) print i,"\t",state[i]}' ESTABLISHED 1 [root@localhost ~]#4.30 把狀態全都取出來后使用uniq -c統計后再進行排序
[root@localhost ~]# netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn8 LISTEN1 Foreign1 ESTABLISHED1 established) [root@localhost ~]#05. 附錄
參考:【Linux】一步一步學Linux系列教程匯總
總結
以上是生活随笔為你收集整理的【Linux】一步一步学Linux——netstat命令(166)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux】一步一步学Linux——a
- 下一篇: 【Linux】一步一步学Linux——t