在 Linux 建構服務時,通常遇到問題除了查詢log 之外,大多數還會確認連線是否正常,port是否有打通之類

Linux 命令列的 netstat 可以查詢到各種網路相關訊息

當我們要檢測 socket、TCP、UDP、IP、ethernet等各種連線,都可以用它來查詢

支援一般權限,以及 IPv4, IPv6

這裡筆記方式記錄一些用法

搭配 watch 監控現有連線

watch -d -n0 "netstat | grep ESTABLISHED"

以下可能是 CentOS的環境使用:

列出完整的 URL 位址

netstat -tup -W

這個指令可以將所有連線的 IP 位址列出來,並依照每個 IP 位址的連線數排序

netstat -an | grep ESTABLISHED | awk '/^tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr

用 awk 分析連線 這個指令可以分析 Apache 的連線,列出每個 IP 位址的連線數

sudo netstat -anpt | grep http | grep ESTABLISHED | awk -F "[ :]*" '{print $4}' | uniq -c

這個指令可以將所有連線的 IP 位址列出來,並依照每個 IP 位址的連線數排序.

netstat -an | grep ESTABLISHED | awk '/^tcp/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr

這個指令可以驗證 MySQL 是否是透過 UNIX domain socket 連線

netstat -lx | grep -i sql

列出連線的協定及使用的應用程式

netstat -alp 

秀出目前已經啟動的網路服務

netstat -tulnp

觀察本機上頭所有的網路連線狀態.

netstat -atunp

stat:狀態列,主要的狀態含有:

    ESTABLISED:已建立連線的狀態;
    SYN_SENT:發出主動連線 (SYN 標誌) 的連線封包;
    SYN_RECV:接收到一個要求連線的主動連線封包;
    FIN_WAIT1:該插槽服務(socket)已中斷,該連線正在斷線當中;
    FIN_WAIT2:該連線已掛斷,但正在等待對方主機回應斷線確認的封包;
    TIME_WAIT:該連線已掛斷,但 socket 還在網路上等待結束;
    LISTEN:通常用在服務的監聽 port !可使用『 -l 』參數查閱