運維日記020- Linux下netstat命令的使用方法
Linux下的netstat命令用於顯示各種網絡相關信息,如網絡連接,路由表等。
輸出信息的含義
# netstat
激活Internet連接 (w/o 服務器)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 192.168.1.105:43170 101.201.173.115:http ESTABLISHED
tcp 0 0 192.168.1.105:46953 ec2-52-35-239-215:https ESTABLISHED
tcp 0 0 192.168.1.105:51355 114.215.101.67:http TIME_WAIT
活躍的UNIX域套接字 (w/o 服務器)
Proto RefCnt Flags Type State I-Node 路徑
unix 19 [ ] 數據報 12293 /dev/log
... ...
unix 3 [ ] 流 已連接 15145 /var/run/dbus/system_bus_socket
unix 3 [ ] 流 已連接 15467 @/tmp/.X11-unix/X0
... ...
從整體上看,netstat的輸出結果可以分爲兩個部分:
一個是Active Internet connections,稱爲活躍Internet連接,其中”Recv-Q”和”Send-Q”指的是接收隊列和發送隊列。這些數字一般都應該是0。如果不是則表示數據包正在隊列中堆積。這種情況只能在非常少的情況見到。
另一個是Active UNIX domain sockets,稱爲活躍的UNIX域套接字(和網絡套接字一樣,但是隻能用於本機通信,性能可以提高一倍)。Proto顯示連接使用的協議,RefCnt表示連接到本套接口上的進程號,Types顯示套接口的類型,State顯示套接口當前的狀態,Path表示連接到套接口的其它進程使用的路徑名。
常見參數
-a 全部列出監聽(listen)和不監聽(not listen)的sockets狀態
-t (tcp)僅顯示tcp相關選項
-u (udp)僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的全部轉化成數字。
-l 僅列出有在Listen(監聽)的服務狀態
-p 顯示建立相關鏈接的程序名
-r 顯示路由信息,路由表
-e 顯示擴展信息,例如uid等
-s 按各個協議進行統計
-c 每隔一個固定時間,執行該netstat命令。
提示:LISTEN和LISTENING的狀態只有用-a或者-l才能看到
範例
查看本主機服務所監聽的所以端口:
# netstat -lntup
激活Internet連接 (僅服務器)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:42153 0.0.0.0:* LISTEN 22054/haroopad
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 898/smbd
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN 1726/dnsmasq
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 2151/cupsd
... ...
查找監聽在445號端口的進程名及其pid:
# netstat -lntup | grep 445
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 898/smbd
tcp6 0 0 :::445 :::* LISTEN 898/smbd