欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Linux運(yùn)維之如何使用ss命令代替netstat

 更新時(shí)間:2019年07月12日 10:51:22   作者:Charles  
這篇文章主要給大家介紹了關(guān)于Linux運(yùn)維之如何使用ss命令代替netstat的相關(guān)資料,需要的朋友可以參考下

前言

在運(yùn)維和管理 Linux 服務(wù)器的時(shí)候,我們最常用的一個(gè)命令就是 netstat,我常用這個(gè)命令來(lái)查看當(dāng)前服務(wù)器上有哪些進(jìn)程正在偵聽(tīng)端口,主要用來(lái)診斷網(wǎng)絡(luò)服務(wù)的工作狀態(tài)。

不過(guò),最近有一次安裝好一個(gè) Ubuntu 發(fā)型版,發(fā)現(xiàn)默認(rèn)沒(méi)有安裝 netstat,覺(jué)得非常奇怪,自己手動(dòng)安裝后,發(fā)現(xiàn) man pages 提示,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 man pages

netstat 的用法

netstat 有許多許多參數(shù),我一般就用一種組合,以至于后來(lái)已經(jīng)想不起來(lái)為什么是這幾個(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é)議的偵聽(tīng)情況,第二個(gè)段落展示的是 socks 文件的偵聽(tīng)情況。參數(shù) n 的意思是展示數(shù)字格式的 IP 地址,不然會(huì)展示主機(jī)名稱或者是域名,參數(shù) p 的意思顯示進(jìn)程的名字(有時(shí)候顯示不出來(lái)),l 的意思,是關(guān)注處于 LISTENING 狀態(tài)的 socket。

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

ss 的用法

上面介紹了 netstat 的最最基本的一種用法,其他用法當(dāng)然還有很多,但是先略過(guò)不表,如果想使用 ss 命令來(lái)代替 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)出來(lái)的結(jié)果,可以看到,格式和 netstat 很不一樣,不像 netstat 命令那么緊湊和直觀。這是很多人詬病這個(gè)命令的原因之一。當(dāng)然,批判這種批判的聲音認(rèn)為,人們只是死守了一種習(xí)慣,不愿前行。當(dāng)然了,這么說(shuō)也未嘗不對(duì),就拿 Charles 個(gè)人來(lái)說(shuō),就算我 2010 年參加工作,才學(xué)會(huì) netstat 命令,那我到現(xiàn)在也使用了將近十年,從來(lái)沒(méi)有變過(guò),當(dāng)然看得無(wú)比順眼啦。

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

不說(shuō)閑話了,說(shuō)說(shuō)幾個(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),看起來(lái)臟亂差。當(dāng)然,我們可以用一些命令去格式化它,不過(guò)還是太麻煩了。

更換的原因是什么?

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

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

https://serverfault.com/questions/633087/where-is-the-statement-of-deprecation-of-ifconfig-on-linux

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

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

結(jié)論

咱們這些做技術(shù)的,也還是要與時(shí)俱進(jìn)比較好,雖然,以前的那些命令熟悉,好用,手到擒來(lái),甚至無(wú)法忘記,但是新的還是要保持學(xué)習(xí)。很多發(fā)型版已經(jīng)默認(rèn)不帶有 net-tools 包了,雖然仍然可以手動(dòng)安裝回來(lái),但是,這背后的態(tài)度已經(jīng)很明確了。另一方面,我們做技術(shù),也要謹(jǐn)防自己的大腦僵化,還是要保持對(duì)新事物的好奇心和熱情。

好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • apache啟動(dòng)報(bào)錯(cuò):the requested operation has failed解決辦法

    apache啟動(dòng)報(bào)錯(cuò):the requested operation has failed解決辦法

    apache啟動(dòng)報(bào)錯(cuò):the requested operation has failed解決辦法
    2009-11-11
  • 詳解如何在Linux(CentOS 7)命令行模式安裝VMware Tools

    詳解如何在Linux(CentOS 7)命令行模式安裝VMware Tools

    本篇文章主要介紹了如何在Linux(CentOS 7)命令行模式安裝VMware Tools,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • git bash配置ssh 登錄 Linux的方法

    git bash配置ssh 登錄 Linux的方法

    今天小編就為大家分享一篇git bash配置ssh 登錄 Linux的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • linux Bash腳本判別使用者的身份方法示例

    linux Bash腳本判別使用者的身份方法示例

    這篇文章主要介紹了linux Bash腳本判別使用者的身份方法示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • 如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況

    如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況

    這篇文章主要給大家介紹了關(guān)于如何利用Bash腳本監(jiān)控Linux的內(nèi)存使用情況的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用linux具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Linux下查看進(jìn)程打開(kāi)的文件句柄數(shù)和如何修改方法

    Linux下查看進(jìn)程打開(kāi)的文件句柄數(shù)和如何修改方法

    下面小編就為大家?guī)?lái)一篇Linux下查看進(jìn)程打開(kāi)的文件句柄數(shù)和如何修改方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-11-11
  • linux命令行操作百度云上傳下載文件

    linux命令行操作百度云上傳下載文件

    大家好,本篇文章主要講了linux命令行操作百度云上傳下載文件,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下哦
    2021-11-11
  • Apache安全配置之禁止目錄訪問(wèn)的配置方法

    Apache安全配置之禁止目錄訪問(wèn)的配置方法

    這篇文章主要介紹了Apache禁止目錄訪問(wèn)的配置方法,這是一個(gè)常見(jiàn)的、非常有必要的apache安全配置之一,需要的朋友可以參考下
    2014-05-05
  • 詳解Linux中幾個(gè)獲取硬件詳細(xì)信息的命令

    詳解Linux中幾個(gè)獲取硬件詳細(xì)信息的命令

    這篇文章主要介紹了詳解Linux中幾個(gè)獲取硬件詳細(xì)信息的命令,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • linux 安裝pypy , virtualenv及使用方法

    linux 安裝pypy , virtualenv及使用方法

    下面小編就為大家?guī)?lái)一篇linux 安裝pypy , virtualenv及使用方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-12-12

最新評(píng)論