91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么在Linux下使用ss命令代替netstat

發布時間:2021-08-06 10:09:37 來源:億速云 閱讀:108 作者:chen 欄目:系統運維

本篇內容主要講解“怎么在Linux下使用ss命令代替netstat”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么在Linux下使用ss命令代替netstat”吧!

在運維和管理 Linux 服務器的時候,我們常用的一個命令就是 netstat,我常用這個命令來查看當前服務器上有哪些進程正在偵聽端口,主要用來診斷網絡服務的工作狀態。

不過,最近有一次安裝好一個 Ubuntu 發型版,發現默認沒有安裝 netstat,覺得非常奇怪,自己手動安裝后,發現 man pages 提示,netstat 命令已經是 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 有許多許多參數,我一般就用一種組合,以至于后來已經想不起來為什么是這幾個參數了:

netstat -npl

得到的結果是這樣的:

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

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

通過如上命令,我們看到了系統所有打開的 socket,如果你啟動一種網絡服務也好,自己開發一個網絡服務打開端口也好,通過這個命令都應該能看到自己打開的端口,如果看不到,應該就是沒有能夠正確打開端口,要好好查詢是什么原因。所以這是一個很好用的調試命令。

ss 的用法

上面介紹了 netstat 的最最基本的一種用法,其他用法當然還有很多,但是先略過不表,如果想使用 ss 命令來代替 netstat 的話,我們怎樣達到類似的效果呢?

ss -atlp

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

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 命令呈現出來的結果,可以看到,格式和 netstat 很不一樣,不像 netstat 命令那么緊湊和直觀。這是很多人詬病這個命令的原因之一。當然,批判這種批判的聲音認為,人們只是死守了一種習慣,不愿前行。當然了,這么說也未嘗不對,就拿 Charles 個人來說,就算我 2010 年參加工作,才學會 netstat 命令,那我到現在也使用了將近十年,從來沒有變過,當然看得無比順眼啦。

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

不說閑話了,說說幾個參數,a 參數是顯示所有的意思,t 參數意思是顯示 TCP 協議的,l 代表正在 LISTENING 狀態的,p 代表進程信息。從上面的表里,我們看到 p 參數打印的信息,組織得不如 netstat 精煉。但是更為完善一點,顯示了進程名字和 PID 以及 FD。但是因為用了兩重小括號,key/value 的格式,再加引號,看起來臟亂差。當然,我們可以用一些命令去格式化它,不過還是太麻煩了。

更換的原因是什么?

這可能是我最為好奇的事情。不過網上我搜索了不少的資料,基本都語焉不詳。這也有點讓我有點無奈。

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

也有從 原理層面 分析的:現在的 netstat 和 ifconfig 命令,都是通過讀寫 /proc 目錄下的虛擬文件來完成任務的,這個東西在小型業務系統上,是沒問題的,但是在大規模系統里,可能會傷害系統的性能之類的。相比之下,ss 和 ip 兩個命令,使用的是 Linux 內核的 netlink sockets 特性。有著根本上的不同。雖然,老命令也可以用新原理重寫,但是其實并沒有人那么做,主要因為不同程序員團體的一些 political issues ,大家意見不合……

當然,深層次的還有,我們使用這樣的調試命令,本質上還是希望獲知內核的狀態的,其實,內核已經改變了 networking 模塊的整個原理,另一方面我還要求命令像從前那樣去展示信息,展示層面的格式和真實原理已經背離,所以,從長遠看,替代這兩個命令才是必然。

到此,相信大家對“怎么在Linux下使用ss命令代替netstat”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

五莲县| 枣强县| 浦县| 通道| 育儿| 葫芦岛市| 中宁县| 沿河| 富民县| 邮箱| 迭部县| 东乡| 敦化市| 红原县| 岚皋县| 大城县| 万全县| 临潭县| 合江县| 电白县| 沈阳市| 库尔勒市| 新宁县| 东乡县| 高碑店市| 桃园市| 天台县| 霍林郭勒市| 卢龙县| 灌云县| 思南县| 武强县| 宜州市| 包头市| 北票市| 客服| 徐州市| 长沙市| 定远县| 确山县| 萨迦县|