日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

前言

在調試網絡程序或者定位網絡相關問題時,有一個命令不得不知,它就是netstat。netstat命令用于查看網絡連接,路由表,網絡接口統計數據, 虛擬連接等信息。netstat的選項很多,但是本文準備介紹一些netstat命令的實用技巧。

查看某個端口是否被占用

如果你遇到“Address already in use”的錯誤,那么你就需要好好看看是不是端口已經被占用了。-a(all)參數用于列出所有監聽和非監聽狀態的連接

$ netstat -a|grep 6379
tcp 0 0 *:6379 *:* LISTEN 
tcp6 0 0 [::]:6379 [::]:* LISTEN 

這里我們可以看到,有一個tcp連接使用了6379端口,并且當前處于LISTEN狀態,這些狀態信息對于分析網絡連接問題非常有幫助,我們將會在后面的文章中看到它們大放異彩。

當然你也可以使用lsof命令中的方法來查看。關于grep的用法,也可以參考《grep命令詳解》,這里就不展開了,我們后面會在很多地方用到。

查找占用端口的進程

前面雖然知道已經有進程使用了6379端口,但是不知道是哪個進程,因此為了知道進程信息,需要使用-p(program)參數

$ netstat -ap|grep 6379
tcp 0 0 *:6379 *:* LISTEN 10011/redis-server 
tcp6 0 0 [::]:6379 [::]:* LISTEN 10011/redis-server

這個時候就可以看到是進程id為10011的redis-server進程占用了6379端口,至此要殺要剮就隨你便了。

查看指定協議的連接

我們都知道,除了TCP之外還有UDP,如果我們想查看指定類型的連接呢?

$ netstat -at #-t,查看tcp連接
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.0.103:42468 113.96.233.139:https ESTABLISHED
tcp 0 0 192.168.0.103:59326 123.58.182.252:https TIME_WAIT 
tcp 0 0 192.168.0.103:59328 123.58.182.252:https TIME_WAIT 
(未顯示完全)

以此種方式,可以看到所有的TCP連接,而對于UDP連接,只需要使用-u(UDP):

$ netstat -au
udp 0 0 *:36305 *:* 
udp 0 0 127.0.1.1:domain *:* 
udp 0 0 *:bootpc *:* 
udp 0 0 *:ipp *:* 
(未顯示完全))

當然了,這兩個參數也是可以一起用的。

除此之外,還可以使用-4或-6來指定查看ipv4還是ipv6的連接:

查看處于監聽狀態的連接

對于還沒有建立完整連接的服務器來說,它啟動后正常的狀態是LISTEN狀態,如果只想查看處于該狀態的連接,則可以使用-l(LISTEN)參數

$ netstat -l
Proto Recv-Q Send-Q Local Address Foreign Address State 
tcp 0 0 127.0.1.1:domain *:* LISTEN 
tcp 0 0 localhost:5941 *:* LISTEN 
tcp 0 0 localhost:ipp *:* LISTEN 
tcp 0 0 localhost:socks *:* LISTEN 
tcp 0 0 *:6379 *:* LISTEN
(未顯示完全)

這個時候記得不要帶上-a參數,它會列出所有。

而你如果要查看其他狀態的連接,只需要結合grep使用即可,例如,查看ESTABLISHED狀態的連接:

$ netstat -anp |grep ESTAB
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp 0 0 192.168.0.103:42468 113.96.233.139:443 ESTABLISHED 2613/chrome 
tcp 0 0 192.168.0.103:38024 108.177.125.188:443 ESTABLISHED 2613/chrome 

不解析主機,端口等信息

不知道你有沒有發現,在執行前面的命令的時候,速度很慢,讓你一度懷疑是不是自己電腦太卡了。實際上,你觀察前面的輸出結果就會發現,很多連接的主機名和端口對應的應用都解析出來了,例如:

123.58.182.252:https

所以慢是因為它需要做解析,使用-n(numeric)參數就可以快速顯示原始數字端口或地址了

$ netstat -anp

一定要自己嘗試一下奧!

持續輸出連接信息

你在定位網絡相關問題的時候,總不想執行一次觀察一次吧?能不能自動反復執行查看呢?當然可以啦!可以使用-c(continuous)參數:

$ netstat -npc

這樣,它就會每隔一秒執行一次。當然你完全可以使用watch命令,關于watch命令的使用可以參考《解放你的雙手-watch》。

查看用戶和連接的iNode

這條連接是哪個用戶建立的呢?unix下一切皆文件,那么這個連接的iNode是多少呢?借助-e(extend)參數可以看到這些信息:

$ netstat -ent
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode 
tcp 0 0 192.168.0.103:42468 113.96.233.139:443 ESTABLISHED 1000 134891 
tcp 0 0 192.168.0.103:46556 121.9.246.106:443 TIME_WAIT 0 0 

可以看到在使用-e參數后,多了最后兩列,分別是user和Inode。而使用id命令可以知道該user到底是誰:

$ id 1000
uid=1000(hyb) gid=1000(hyb) groups=1000(hyb),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)

查看連接相關的定時器

使用-o可以查看和連接相的定時器信息,

$ netstat -nto
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State Timer
tcp 0 0 192.168.0.103:42468 113.96.233.139:443 ESTABLISHED keepalive (18.69/0/0)
tcp 1 1 192.168.0.103:43718 113.96.233.139:443 LAST_ACK on (19.97/7/0)
tcp 0 0 192.168.0.103:38024 108.177.125.188:443 ESTABLISHED keepalive (34.76/0/0)
tcp 0 0 192.168.0.103:60362 123.58.182.252:443 TIME_WAIT timewait (6.70/0/0)
tcp6 0 0 127.0.0.1:9614 127.0.0.1:59736 ESTABLISHED off (0.00/0/0)

最后的timer列相關字段含義如下:

  • keepalive keepalive的時間計時
  • on 重發的時間計時
  • off 沒有時間計時
  • timewait 等待時間計時

關于定時器的含義,需要對TCP協議有較多理解,這里就不展開了。

查看數據包統計信息

各種協議的數據包的收發情況如何呢?連接數量如何呢是用-s(statistics)參數可以查看:

$ netstat -s
(僅顯示了TCP協議的結果)
Tcp:
 3067 active connections openings
 1 passive connection openings
 173 failed connection attempts
 587 connection resets received
 10 connections established
 657576 segments received
 456349 segments send out
 2700 segments retransmited
 16 bad segments received.
 1321 resets sent

查看路由信息

使用-r(route)參數可以查看路由相關信息,例如:

$ netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 192.168.0.1 0.0.0.0 UG 0 0 0 wlp3s0
link-local * 255.255.0.0 U 0 0 0 wlp3s0
192.168.0.0 * 255.255.255.0 U 0 0 0 wlp3s0

當然你也可以借助route命令完成這樣簡單的工作。

總結

netstat命令是我們定位網絡相關問題的利器,如果你還不會使用,那么最好花幾分鐘學習一下。netstat更詳細的字段解釋可以參考其手冊。
 

分享到:
標簽:netstat
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定