在 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 』參數查閱