编程的时候经常发现我们需要使用的端口被别的程序占用,这个时候需要清楚查看是哪个程序占用了端口,用且清除了这个进程!
1、开始---->运行---->cmd,或者是window+R组合键,调出命令窗口:
2、输入命令:netstat -ano,列出所有端口的情况。在列表中我们观察被占用的端口,比如是8080,首先找到它:
3、查看被占用端口对应的PID,输入命令:netstat -aon|findstr "8080",回车,记下最后一位数字,即PID,这里是2668。
4、继续输入tasklist|findstr "2668",回车,查看是哪个进程或者程序占用了2668端口,结果是:java.exe
5、或者是我们打开任务管理器,点击查看--->选择列,将PID(进程标示符)前面的勾打上,点击确定。
切换到进程选项卡,在PID一列查看2668对应的进程,如下图:
6、结束该进程:在任务管理器中选中该进程点击”结束进程“按钮,或者是在cmd的命令窗口中输入:
taskkill /f /t /im java.exe。
注:后两步可以使用任务管理器,因为看的比较直观而且方便。
命令行工具;可以将下面代码保存为kill.bat文件。双击该文件。出现下方界面。方便快捷
@echo off & setlocal EnableDelayedExpansion
CHCP 65001
CLS
echo 请输入程序正在运行的端口号
set /p port=
echo 找到的进程记录
echo =================================================================================
netstat -nao|findstr !port!
echo =================================================================================
echo 回车进行逐个确认
pause
for /f "tokens=2,5" %%i in ('netstat -nao^|findstr :%%port%%') do (
::if "!processed[%%j]!" == "" (
if not defined processed[%%j] (
set pname=N/A
for /f "tokens=1" %%p in ('tasklist^|findstr %%j') do (set pname=%%p)
echo %%i %%j !pname!
echo 输入Y确认Kill,否则跳过,可回车跳过
set flag=N/A
set /p flag=
if "!flag!" == "Y" (
taskkill /pid %%j -t -f
) else (
echo 已跳过
)
set processed[%%j]=1
)
)
echo 程序结束