欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Linux運(yùn)維培訓(xùn)之使用ss命令代替netstat

2019-07-12 10:24:51 2516瀏覽

今天千鋒扣丁學(xué)堂Linux培訓(xùn)老師給大家分享一篇關(guān)于Linux運(yùn)維使用ss命令代替netstat的詳細(xì)介紹,首先在運(yùn)維和管理Linux服務(wù)器的時(shí)候,我們最常用的一個(gè)命令就是netstat,我常用這個(gè)命令來查看當(dāng)前服務(wù)器上有哪些進(jìn)程正在偵聽端口,主要用來診斷網(wǎng)絡(luò)服務(wù)的工作狀態(tài)。



不過,最近有一次安裝好一個(gè)Ubuntu發(fā)型版,發(fā)現(xiàn)默認(rèn)沒有安裝netstat,覺得非常奇怪,自己手動(dòng)安裝后,發(fā)現(xiàn)manpages提示,netstat命令已經(jīng)是deprecated了,建議使用ss命令代替。

This program is mostly obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route. Replacement for netstat -i is ip -s link. Replacement for netstat -g is ip maddr.

netstat的用法

netstat有許多許多參數(shù),我一般就用一種組合,以至于后來已經(jīng)想不起來為什么是這幾個(gè)參數(shù)了:

netstat -npl 

得到的結(jié)果是這樣的:

Active Internet connections (only servers) 
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name 
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      655/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      890/sshd 
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      30790/cupsd 
tcp        0      0 0.0.0.0:18025           0.0.0.0:*               LISTEN      890/sshd 
tcp6       0      0 :::22                   :::*                    LISTEN      890/sshd 
tcp6       0      0 ::1:631                 :::*                    LISTEN      30790/cupsd 
tcp6       0      0 :::9090                 :::*                    LISTEN      15415/./prometheus 
tcp6       0      0 :::18025                :::*                    LISTEN      890/sshd 
udp        0      0 127.0.0.53:53           0.0.0.0:*                           655/systemd-resolve 
udp        0      0 0.0.0.0:631             0.0.0.0:*                           30792/cups-browsed 
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           757/avahi-daemon: r 
udp        0      0 0.0.0.0:42360           0.0.0.0:*                           757/avahi-daemon: r 
udp6       0      0 :::58232                :::*                                757/avahi-daemon: r 
udp6       0      0 :::5353                 :::*                                757/avahi-daemon: r 
Active UNIX domain sockets (only servers) 
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path 
unix  2      [ ACC ]     STREAM     LISTENING     35116    1304/gnome-session-  @/tmp/.ICE-unix/1304 
unix  2      [ ACC ]     SEQPACKET  LISTENING     1448     1/init               /run/udev/control 
unix  2      [ ACC ]     STREAM     LISTENING     34277    1270/systemd         /run/user/1000/systemd/private 
unix  2      [ ACC ]     STREAM     LISTENING     34282    1270/systemd         /run/user/1000/gnupg/S.gpg-agent.ssh 
unix  2      [ ACC ]     STREAM     LISTENING     33510    1270/systemd         /run/user/1000/gnupg/S.gpg-agent 
unix  2      [ ACC ]     STREAM     LISTENING     33511    1270/systemd         /run/user/1000/pulse/native 
unix  2      [ ACC ]     STREAM     LISTENING     33512    1270/systemd         /run/user/1000/gnupg/S.gpg-agent.extra

最常用的就是這個(gè)命令組合,展示的結(jié)果有兩個(gè)段落,第一個(gè)段落展示的是TCP/UDP協(xié)議的偵聽情況,第二個(gè)段落展示的是socks文件的偵聽情況。參數(shù)n的意思是展示數(shù)字格式的IP地址,不然會(huì)展示主機(jī)名稱或者是域名,參數(shù)p的意思顯示進(jìn)程的名字(有時(shí)候顯示不出來),l的意思,是關(guān)注處于LISTENING狀態(tài)的socket。

通過如上命令,我們看到了系統(tǒng)所有打開的socket,如果你啟動(dòng)一種網(wǎng)絡(luò)服務(wù)也好,自己開發(fā)一個(gè)網(wǎng)絡(luò)服務(wù)打開端口也好,通過這個(gè)命令都應(yīng)該能看到自己打開的端口,如果看不到,應(yīng)該就是沒有能夠正確打開端口,要好好查詢是什么原因。所以這是一個(gè)很好用的調(diào)試命令。

ss的用法

上面介紹了netstat的最最基本的一種用法,其他用法當(dāng)然還有很多,但是先略過不表,如果想使用ss命令來代替netstat的話,我們?cè)鯓舆_(dá)到類似的效果呢?

ss -atlp 

這是我自己摸索的一個(gè)參數(shù)組合,目前我背誦得還不是很流利,每次還需要看一下文檔:

State          Recv-Q           Send-Q                      Local Address:Port                       Peer Address:Port 
LISTEN         0                128                         127.0.0.53%lo:domain                          0.0.0.0:*              users:(("systemd-resolve",pid=655,fd=13)) 
LISTEN         0                128                               0.0.0.0:ssh                             0.0.0.0:*              users:(("sshd",pid=890,fd=5)) 
LISTEN         0                5                               127.0.0.1:ipp                             0.0.0.0:*              users:(("cupsd",pid=30790,fd=7)) 
LISTEN         0                128                               0.0.0.0:18025                           0.0.0.0:*              users:(("sshd",pid=890,fd=3)) 
LISTEN         0                128                                  [::]:ssh                                [::]:*              users:(("sshd",pid=890,fd=6)) 
LISTEN         0                5                                   [::1]:ipp                                [::]:*              users:(("cupsd",pid=30790,fd=6)) 
LISTEN         0                128                                     *:9090                                  *:*              users:(("prometheus",pid=15415,fd=3)) 
LISTEN         0                128                                  [::]:18025                              [::]:*              users:(("sshd",pid=890,fd=4)) 

這是ss命令呈現(xiàn)出來的結(jié)果,可以看到,格式和netstat很不一樣,不像netstat命令那么緊湊和直觀。這是很多人詬病這個(gè)命令的原因之一。當(dāng)然,批判這種批判的聲音認(rèn)為,人們只是死守了一種習(xí)慣,不愿前行。當(dāng)然了,這么說也未嘗不對(duì),就拿Charles個(gè)人來說,就算我2010年參加工作,才學(xué)會(huì)netstat命令,那我到現(xiàn)在也使用了將近十年,從來沒有變過,當(dāng)然看得無(wú)比順眼啦。

當(dāng)然,也有一種理由是老外提出來的,說ss這個(gè)命令的名字不好,其實(shí)ss可能是socketstatistics的意思,縮寫以后,竟然只有兩個(gè)字母,不太好聯(lián)想,不像netstat那么直觀。當(dāng)然這是我的解釋,不是老外抱怨的理由,他們抱怨的是,每每提及ss,他們會(huì)聯(lián)想起希特勒!是不是匪夷所思,我是80后,我這個(gè)年代的人,對(duì)這個(gè)都沒有什么印象,關(guān)鍵我們用中文為主,估計(jì)大家看到ss最多聯(lián)想到梯子,怎么都不會(huì)想到希特勒。這個(gè)大納粹有一個(gè)武裝部隊(duì),以前叫黨衛(wèi)隊(duì)特別機(jī)動(dòng)部隊(duì),后來改名叫武裝黨衛(wèi)隊(duì)。它的德語(yǔ)簡(jiǎn)稱正是SS。

不說閑話了,說說幾個(gè)參數(shù),a參數(shù)是顯示所有的意思,t參數(shù)意思是顯示TCP協(xié)議的,l代表正在LISTENING狀態(tài)的,p代表進(jìn)程信息。從上面的表里,我們看到p參數(shù)打印的信息,組織得不如netstat精煉。但是更為完善一點(diǎn),顯示了進(jìn)程名字和PID以及FD。但是因?yàn)橛昧藘芍匦±ㄌ?hào),key/value的格式,再加引號(hào),看起來臟亂差。當(dāng)然,我們可以用一些命令去格式化它,不過還是太麻煩了。

更換的原因是什么?

這可能是我最為好奇的事情。不過網(wǎng)上我搜索了不少的資料,基本都語(yǔ)焉不詳。這也有點(diǎn)讓我有點(diǎn)無(wú)奈。

大體上,我們能看出來,主要是net-tools這個(gè)包,將要被iproute這個(gè)包給替換。理由大概是,1,這個(gè)包太老了,2,這個(gè)包不支持很多內(nèi)核新的特性(但是沒有說是哪些特性),界面不夠優(yōu)化使用困難(對(duì)命令行不友好),3,net-tools里面的ifconfig確實(shí)缺點(diǎn)多多,4,未來不再想維護(hù)net-tools了。

Luk Claes and me, as the current maintainers of net-tools, we’ve been thinking about it’s future. Net-tools has been a core part of Debian and any other linux based distro for many years, but it’s showing its age.

It doesnt support many of the modern features of the linux kernel, the interface is far from optimal and difficult to use in automatisation, and also, it hasn’t got much love in the last years.

On the other side, the iproute suite, introduced around the 2.2 kernel line, has both a much better and consistent interface, is more powerful, and is almost ten years old, so nobody would say it’s untested.

Hence, our plans are to replace net-tools completely with iproute, maybe leading the route for other distributions to follow. Of course, most people and tools use and remember the venerable old interface, so the first step would be to write wrappers, trying to be compatible with net-tools.

At the same time, we believe that most packages using net-tools should be patched to use iproute instead, while others can continue using the wrappers for some time. The ifupdown package is obviously the first candidate, but it seems that a version using iproute has been available in experimental since 2007.

也有從原理層面分析的:現(xiàn)在的netstat和ifconfig命令,都是通過讀寫/proc目錄下的虛擬文件來完成任務(wù)的,這個(gè)東西在小型業(yè)務(wù)系統(tǒng)上,是沒問題的,但是在大規(guī)模系統(tǒng)里,可能會(huì)傷害系統(tǒng)的性能之類的。相比之下,ss和ip兩個(gè)命令,使用的是Linux內(nèi)核的netlinksockets特性。有著根本上的不同。雖然,老命令也可以用新原理重寫,但是其實(shí)并沒有人那么做,主要因?yàn)椴煌绦騿T團(tuán)體的一些politicalissues,大家意見不合……

當(dāng)然,深層次的還有,我們使用這樣的調(diào)試命令,本質(zhì)上還是希望獲知內(nèi)核的狀態(tài)的,其實(shí),內(nèi)核已經(jīng)改變了networking模塊的整個(gè)原理,另一方面我還要求命令像從前那樣去展示信息,展示層面的格式和真實(shí)原理已經(jīng)背離,所以,從長(zhǎng)遠(yuǎn)看,替代這兩個(gè)命令才是必然。

以上就是關(guān)于千鋒扣丁學(xué)堂Linux運(yùn)維培訓(xùn)之使用ss命令代替netstat的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,想要學(xué)好Linux開發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專業(yè)老師制定的Linux學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Linux課程體系和Linux視頻教程供大家學(xué)習(xí),想要學(xué)好Linux開發(fā)技術(shù)的小伙伴快快行動(dòng)吧??鄱W(xué)堂Linux技術(shù)交流群:422345477。


                          【掃碼進(jìn)入HTML5VIP免費(fèi)公開課】  


     【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】        【掃碼進(jìn)入HTML5前端開發(fā)VIP免費(fèi)公開課】



查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>

標(biāo)簽: Linux培訓(xùn) Linux視頻教程 紅帽Linux視頻 Linux學(xué)習(xí)視頻 Linux入門視頻 紅帽RHCE/RHCSA考試

熱門專區(qū)

暫無(wú)熱門資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部