根據port端口號查找process進程(服務)或者根據服務名字查找端口號html
首先介紹根據服務名字查找端口:mysql
控制面板->管理工具->服務,好比已經開啓的服務 mysql5_pn,右鍵屬性,能夠查看到它的服務名字,顯示名字,和對應的進程exe,咱們平時在cmd中的命令net start service之類的命令這個service就是服務名字,而tasklist命令查找的是進程名字,這時候咱們找到mysql5_pn對應的進程名字是 mysqld-nt,而後使用tasklist |findstr mysqld-nt,就會列出對應的信息,咱們找到pid,好比說是3372,而後敲netstat -aon |findstr 3372,而後就會列出含有3372字符串的一些進程,同時顯示了端口,這樣就從一個服務名字來得到它的端口號了。sql
在網絡程序的調試過程當中,常常發生一些出乎意料的事情,好比建立一個TCP服務失敗,這時候每每須要查看系統的網絡狀況,最經常使用的網絡抓包固然非 WireShark模式。但每每不少時候只須要查看某個端口的使用狀況,它到底被那個進程(對應PID)佔用了,或者你還須要把它Kill掉。若是你在 Windows操做系統,你可使用netstat命令來查詢PID,而後能夠打開任務管理器,查看這個PID對應的進程名;若是PID沒有顯示,菜單》 查看》選擇列》選中PID便可;得知進程後,咱們能夠將進程殺掉。下面我簡單描述一下我所瞭解的在Windows和Linux系統下處理方式。 (假如咱們須要肯定誰佔用了咱們的9010端口)windows
:在windows控制檯窗口下執行promise
netstat -nao | findstr "9010"
TCP 127.0.0.1:9010 0.0.0.0:0 LISTENING 3017網絡
你看到是PID爲3017的進程佔用了9010端口,若是進一步你想知道它的進程名稱,你可使用以下命令:工具
tasklist | findstr "3017"spa
若是你想殺死這個進程,你固然能夠用前面描述的那種方法,在任務管理器裏把它KILL了,但若是你喜歡高效一點,那麼用taskkill命令就能夠了。操作系統
taskkill /pid 3017命令行
那麼這個進程就灰灰湮滅了:)
若是你是個Linux愛好者,那個這個命令你應該很熟了,
netstat -pan | grep 9010
若是你稍微仔細一點,你會發現,用的都是netsta命令,事實上,netstat是一個比較通用的網絡統計命令,幾乎適用於全部如今流行的操做系統,不管是Linux,Window,仍是其餘Unix,或者Unix-like操做系統,並且用法基本一致。
下面是一個對Windows系統中netstat命令行參數的詳細解釋。
格式:
netstat [-a] [-e] [-n] [-o] [-p Protocol] [-b] [-r] [-s] [-v] [Interval]
參數說明:
-a 顯示全部鏈接和監聽端口。
-n 以數字形式顯示地址和端口號。
-o 顯示與每一個鏈接相關的所屬進程 ID。
-p 在Windows系統中,該選項用於指定默認狀況的子集。proto 顯示 proto 指定的協議的鏈接;proto 能夠是下列協議之一: TCP、UDP、TCPv6 或 UDPv6。
若是與 -s 選項一塊兒使用以顯示按協議統計信息,proto 能夠是下列協議之一:
IP、IPv六、ICMP、ICMPv六、TCP、TCPv六、UDP 或 UDPv6。
-b 顯示包含於建立每一個鏈接或監聽端口的可執行組件。在某些狀況下已知可執行組件擁有多個獨立組件,而且在這些狀況下; 包含於建立鏈接或監聽端口的組件序列被顯示。這種狀況下,可執行組件名在底部的 [] 中,頂部是其調用的組件,等等,直到 TCP/IP 部分。注意此選項
可能須要很長時間,若是沒有足夠權限可能失敗。
-e 顯示以太網統計信息。此選項能夠與 -s選項組合使用。
-s 顯示按協議統計信息。默認地,顯示 IP、IPv六、ICMP、ICMPv六、TCP、TCPv六、UDP 和 UDPv6 的統計信息。
-r 顯示路由表。 -v 與 -b 選項一塊兒使用時將顯示包含於爲全部可執行組件建立鏈接或監聽端口的組件。 interval 從新顯示選定統計信息,每次顯示之間暫停時間間隔(以秒計)。按 CTRL+C 中止從新顯示統計信息。若是省略,netstat 顯示當前 配置信息(只顯示一次)。