ss 概述
`ss` 命令通過內核的 `netlink` 接口直接獲取套接字信息,因此在連接數量龐大的系統上比 `netstat` 更快。此外,它還提供了 `netstat` 不提供的更多 TCP 狀態信息和詳細的套接字統計。在現代 Linux 系統中查詢網絡相關信息時,強烈建議使用 `ss`。
ss 的主要角色
`ss` 命令主要用於以下目的:
主要應用領域
- 檢查網絡連接及監聽端口: 顯示系統中所有活躍的 TCP、UDP 和 UNIX 套接字。
- 進程與端口映射: 檢查哪些進程正在使用特定端口。
- 檢查路由表: 顯示定義 IP 封包傳輸路徑的路由表。
- 網絡接口統計: 提供每個網絡接口的封包傳輸和接收統計。
- 詳細分析套接字狀態: 深入分析 TCP 連接的詳細狀態(例如:`ESTAB`、`LISTEN`、`TIME-WAIT` 等)及其統計。
`ss` 與 `netstat`
`ss` 是 `netstat` 的現代且強大的替代品。
- ss: 現代、快速,直接訪問內核的套接字統計,完美支持 IPv6,提供更多過濾選項。
- netstat: 舊版工具,基於 `/proc` 文件系統,在大型連接時可能變慢,對 IPv6 支持不完整。
主要 ss 命令選項
`ss` 命令可以組合不同的選項,以詳細過濾和顯示所需的網絡信息。
1. 套接字類型及狀態過濾
2. 輸出格式及詳細信息
3. 路由和其他
生成的命令:
請試著組合命令。
這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。
`ss` 執行命令。
請將上述選項組合在一起,與 AI 一同虛擬執行命令。
使用示例
通過多種 `ss` 命令的應用示例,有效監控和分析系統的網絡連接及套接字狀態。
檢查所有活躍的 TCP 連接及監聽端口
sudo ss -tulpn
以數字地址顯示當前系統中所有活躍的 TCP 套接字(包括監聽),並顯示相關的程序名稱和 PID。
僅檢查所有監聽(Listening)TCP 端口
sudo ss -tlpn
以數字格式顯示當前等待連接的所有 TCP 監聽端口。在確認網頁伺服器、數據庫等服務端口是否打開時非常有用。
檢查使用特定端口的進程
sudo ss -tlpn | grep :22
檢查使用端口 `22`(SSH)的所有 TCP 連接及監聽端口的詳細信息。(對於 SSH 伺服器診斷非常有用)
檢查所有狀態為 ESTABLISHED 的 TCP 連接
ss -t state established
顯示當前活躍且正在進行數據通信的所有 TCP 連接。在確認外部連接是否正常時非常有用。
檢查 TIME-WAIT 狀態的套接字數量
ss -s | grep -i time-wait
檢查 TCP 連接關閉後仍處於 `TIME-WAIT` 狀態的套接字數量。如果這個數量過多,可能會導致系統資源耗盡。
檢查所有 UDP 套接字
ss -ulpn
檢查當前系統中使用的所有 UDP 套接字連接及監聽端口。
檢查路由表
ss -r
顯示系統的 IP 路由表。與 `ip route show` 類似。