有時候tomcat出現端口被占用,需要查出進程ID並殺死進程。
1.查找占用端口的進程ID(windows與linux一樣 8005也可以加上引號 grep可以用findstr替換)
6904就是占用端口的進程ID。為了驗證再查詢端口為8009:
另一種方法是根據關鍵字查詢PID:
2.windows下殺死進程:
查看 taskkill幫助命令:
C:\>taskkill /? TASKKILL [/S system [/U username [/P [password]]]] { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F] 描述: 使用該工具按照進程 ID (PID) 或映像名稱終止任務。 參數列表: /S system 指定要連接的遠程系統。 /U [domain\]user 指定應該在哪個用戶上下文執行這個命令。 /P [password] 為提供的用戶上下文指定密碼。如果忽略,提示 輸入。 /FI filter 應用篩選器以選擇一組任務。 允許使用 "*"。例如,映像名稱 eq acme* /PID processid 指定要終止的進程的 PID。 使用 TaskList 取得 PID。 /IM imagename 指定要終止的進程的映像名稱。通配符 '*'可用來 指定所有任務或映像名稱。 /T 終止指定的進程和由它啟用的子進程。 /F 指定強制終止進程。 /? 顯示幫助消息。 篩選器: 篩選器名 有效運算符 有效值 ----------- --------------- ------------------------- STATUS eq, ne RUNNING | NOT RESPONDING | UNKNOWN IMAGENAME eq, ne 映像名稱 PID eq, ne, gt, lt, ge, le PID 值 SESSION eq, ne, gt, lt, ge, le 會話編號。 CPUTIME eq, ne, gt, lt, ge, le CPU 時間,格式為 hh:mm:ss。 hh - 時, mm - 分,ss - 秒 MEMUSAGE eq, ne, gt, lt, ge, le 內存使用量,單位為 KB USERNAME eq, ne 用戶名,格式為 [domain\]user MODULES eq, ne DLL 名稱 SERVICES eq, ne 服務名稱 WINDOWTITLE eq, ne 窗口標題 說明 ---- 1) 只有在應用篩選器的情況下,/IM 切換才能使用通配符 '*'。 2) 遠程進程總是要強行 (/F) 終止。 3) 當指定遠程機器時,不支持 "WINDOWTITLE" 和 "STATUS" 篩選器。 例如: TASKKILL /IM notepad.exe TASKKILL /PID 1230 /PID 1241 /PID 1253 /T TASKKILL /F /IM cmd.exe /T TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*" TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM * TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"
殺死上面PID為6904的進程:
再次查詢8009端口驗證進程是否以死:(發現端口沒被占用)
另一種方法知道PID之后想看具體的是哪個應用程序,可以:
殺死可以用:(根據應用程序殺死)
taskkill -im nginx.exe -f
3.linux殺死進程:(kill命令)
查看所有的進程以及進程號信息:
ps -ef
查找進程的PID且過濾信息信息:
ps -ef | grep redis
根據進程ID殺死進程命令為