Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

Linux 下計算 Web 線上人數的兩種 Shell 指令比較

編輯:關於伺服器

統計 Web 伺服器即時線上人數常用 netstat 解析 TCP 連線。本文比較兩種常見管線指令,並在 Red Hat Linux AS3 實測效能差異。

方法一:傳統寫法(需反向解析)

netstat -a | grep http | awk '{print $5}' | cut -d: -f1 | sort | uniq | wc -l | awk '{print $1 - 1}'
  • netstat -a:顯示所有連線(包含監聽埠),會嘗試反向解析 IP 為主機名,較慢。
  • grep http:過濾 HTTP 服務(預設埠 80 會顯示為 http)。
  • 後續管線:取第 5 欄(客戶端 IP:Port)→ 切割取 IP → 排序去重 → 計數 → 減 1(排除標題行)。

方法二:優化寫法(跳過反向解析,僅統計 ESTABLISHED)

netstat -an | grep ":80 " | grep -i ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq | wc -l | awk '{print $1 - 1}'
  • netstat -an:-n 直接顯示數字 IP/埠,不做反向解析,速度顯著提升。
  • grep ":80 ":精確匹配目的埠 80(注意尾部空格避免匹配 8080 等)。
  • grep -i ESTABLISHED:僅統計已建立連線,排除 TIME_WAIT、LISTEN 等狀態,更精準反映活躍用戶。

實測結論

在 Red Hat Linux AS3 環境測試,方法二優於方法一:

  1. 執行速度更快(省去 DNS 反查)。
  2. 統計結果更精準(僅計 ESTABLISHED 連線)。
  3. 適用於高併發生產環境的即時監控腳本。
💡 進階提示:若需支援 HTTPS (443) 或多埠,可調整 grep 模式為 grep -E ":80 |:443 ";若系統支援 ss 指令,ss -ant sport = :80 state established 效能更優。
Copyright © Windows教程網 All Rights Reserved