netstat是一個(gè)在linux及windows下都十分常用的監(jiān)控TCP/IP網(wǎng)絡(luò)的非常有用的工具,它可以顯示路由表酒贬、實(shí)際的網(wǎng)絡(luò)連接以及每一個(gè)網(wǎng)絡(luò)接口設(shè)備的狀態(tài)信息。Netstat用于顯示與IP翠霍、TCP和ICMP協(xié)議相關(guān)的統(tǒng)計(jì)數(shù)據(jù)锭吨,一般用于檢驗(yàn)本機(jī)各端口的網(wǎng)絡(luò)連接情況
該工具被包含在net-tools包中,如在自己的發(fā)行版中未找到該命令寒匙,可安裝net-tools工具包來得到該工具
命令參數(shù)
該命令提供了多個(gè)參數(shù)零如,這里不一一詳解,有興趣的同學(xué)可以使用
man netstat
來查閱詳細(xì)解釋锄弱,這里只列出六個(gè)常用參數(shù)
六個(gè)參數(shù)
-a參數(shù) 顯示所有連線中的Socket
該參數(shù)為執(zhí)行netstat的默認(rèn)參數(shù)考蕾,即執(zhí)行netstat和執(zhí)行netstat -a所得到的輸出結(jié)果是一樣的,可省略
-t參數(shù) 顯示TCP傳輸協(xié)議的連線狀況
-u參數(shù) 顯示UDP傳輸協(xié)議的連線狀況
-l參數(shù) 顯示監(jiān)控中的服務(wù)器的Socket
輸出狀態(tài)為listening的進(jìn)程或服務(wù)
-p參數(shù) 顯示正在使用Socket的程序識(shí)別碼和程序名稱
在輸出結(jié)果的最后一列顯示程序pid程序名稱会宪,顯示格式為: pid/pname
-n參數(shù) 直接使用ip地址肖卧,而不通過域名服務(wù)器
如不指定該參數(shù),輸出結(jié)果為域名或者主機(jī)名掸鹅,指定該參數(shù)后輸出結(jié)果為ip地址
使用場(chǎng)景
- 檢測(cè)某一服務(wù)是否成功啟動(dòng)可以使用
netstat -tunlp
塞帐,如使用nginx搭建了web服務(wù),則在輸出窗口應(yīng)見到程序名稱為nginx巍沙,監(jiān)聽端口為80的結(jié)果葵姥,如果沒有則說明服務(wù)未正常啟用
image.png - 某一端口被占用導(dǎo)致應(yīng)用或服務(wù)無法啟動(dòng)
如果該無法啟動(dòng)服務(wù)的默認(rèn)端口為80,那么使用netstat -tunlp | grep 80
image.png
從得到的輸出中我們可以看到80端口被nginx占用句携,若想正常啟動(dòng)因被nginx占用80端口而不能啟動(dòng)的服務(wù)榔幸,則需要修改nginx默認(rèn)端口,或者修改該不能啟動(dòng)服務(wù)的默認(rèn)端口务甥,或者使用killall nginx
或kill 5405(具體pid根據(jù)自己的輸出來寫)
來殺掉nginx進(jìn)程牡辽。
總結(jié)
netstat命令是一款強(qiáng)大的,實(shí)用的敞临,每一個(gè)管理員都應(yīng)該掌握的網(wǎng)絡(luò)工具,除本文中介紹到的六個(gè)常見參數(shù)外麸澜,還有其他很多參數(shù)挺尿。還可以與grep, awk等文本處理命令配合得到更佳強(qiáng)大的效果。