Window平台下通過cmd命令查看端口占用、查看進程、結束進程
一、概述:
(更好的閱讀體驗,請移步我的個人博客)在學習進程間通訊的時候,我們知道有一種通訊方式叫做socket。對於跨主機之間的進程通訊,這種方式更為常見,比如常見的基於B/S架構的web服務就是這種通訊方式的一個常見應用,客戶端通過 IP+PORT 找到位於服務端上監聽此端口的進程,從而與該進程進行數據通訊。再如我們常見的MySQL數據庫程序,通常我們會先安裝mysql應用程序,設置其啟動時監聽的端口,這樣,當我們啟動這個程序的時候,mysql服務進程就會綁定相關的端口(測試的時候常用的是3306端口),進而可以接收來自於這個端口的請求,進行相關的處理,反饋。對於這類程序,有時候會出現由於端口被占用導致啟動失敗的情況,比如電腦上的一個進程已經綁定了3306端口,這個時候如果再啟動mysql程序,就會出現端口被占用的錯誤。這個時候簡單一些的處理方式是可以修改mysql使用的端口號,或者結束占用3306端口的進程。
二、查看端口的占用情況:
打開電腦上面的一個終端,如cmd(開始-運行-cmd),鍵入 netstat -ano 命令,這時候就可以查看所有的端口占用情況,如下圖所示:
從圖中可以看到 3306 被 pid為3608的進程占用。如果知道被占用端口號的話,也可以直接使用 netstat -ano|findstr "3306" 命令,如下圖所示:
接着,我們可以使用 tasklist 命令查看pid為3608的進程到底是什么,命令:tasklist|findstr 3608 ,如下圖所示:
可以看到pid為3608的進程是mysqld,這時候如果需要結束此進程,可以使用:taskkill /f /t /im 進程名稱 命令,也可以在任務管理器中結束。
三 總結:
1,socket是一種進程間通訊的方式,使用的話需要知道進程所在的主機IP和綁定的PORT;
2,查看端口被某一進程占用可以使用 netstat -ano|findstr "port" 命令,此命令可以找到占用進程的pid,然后使用 tasklist|findstr "pid" 找到進程名稱,然后使用 taskkill /f /t /im 進程名稱 結束進程。