在開發過程中,經常會碰到一些啓動某個服務,啓動時報端口衝突,怎麼也啓不來,好像只有重啓電腦纔可以解決這個問題,但是有時候,很多服務是在電腦啓動就自動啓動的,導致一些開發者,經常會問,爲什麼我重啓電腦了,還是不行,但是又不知道是那一個服務衝突了,這樣非常耗時且又頭痛的一件事,下面總結一下,解決這些問題的通用方法。
1、隨便以一個服務來驗證一下,MongoDB爲例,首先我們在本地服務裏面,查看一下他的狀態,是啓動狀態,我一般會把一些不常用的服務,設爲手動啓動,在需要的時候,才把它啓動。現在我們已經手動啓動了
2、好了,如果這個服務是啓動狀態,我們在開發的時候,需要通過命令,按流程啓動一些服務,例如,1:要啓動nginx 2:要啓動mysql 3:要啓動一mongoDB… ,前面的服務都依次啓動了,啓動mongoDB時,發現報錯了
現在,我們輸入mongoDB命令啓動一下,發現報以下問題,端口是:27017,通常在遇到這樣的問題,如何解決呢?
mongod --dbpath D:\developer\env\MongoDB\data
解決方案
1、在命令窗口,輸入命令:netstat -aon|findstr 27017 會列出哪些進程佔用了這個端口
netstat -aon|findstr 27017
箭頭指向表示有這些進程佔用了這個端口
2、繼續輸入:tasklist /fi “pid eq 11376”,這個命令是查找到11376這個進程的詳細信息,如下圖所示
tasklist /fi "pid eq 11376"
3、找到了這個服務的進程,如果有多個,我們把不需要的進程殺死就可以了,如何殺死不需要的進程呢?在上圖中,有一個PID值:11376,輸入命令:taskkill /pid 11376 /f
taskkill /pid 11376 /f
如果,靠命令殺不死,我們已經知道是那一個服務了,打開任務管理器,在任務管理器中結束進程