解决方法:
1 通过cmd 查找占用端口对应的PID(进程号)
通过cmd查询端口,命令:netstat -ano | findstr 1099 查找占用端口对应的PID(进程号)
# 列出所有端口占用情况
netstat -ano
# 精确找到被占用的端口对应的PID
netstat -ano|findstr "port"
# 查看是哪个进程或程序占用了端口
tasklist|findstr "PID"
## 杀死进程
taskkill /f /t /im xx进程
## 查找那个进程占用了443端口
netstat -navo|find /i "listen"|find /i ":443"
## 8784 是VM占用了443端口
# 示例
taskkill /f /t /im System
# 示例
tasklist|findstr "4"
# 示例
netstat -ano|findstr "1099"
netstat -ano|findstr 1099
2 如果对应端口号下没有占用的进程,查看是否是Hyper-V保留占用了
使用命令 netsh interface ipv4 show excludedportrange protocol=tcp, 这个是查询windows10下面的Hyper-V的端口保留的TCP范围,结果显示:端口2181被Hyper-V给保留了
两种解决方案:
1、修改端口:配置文件将zookeeper的端口改为高位端口,比如21810 。
2、关闭Hyper-V。使用默认端口 操作如下:控制面板–程序—程序和功能—启动或关闭windows功能,去掉对号
修改Hyper-V占用端口区间
netsh int ipv4 set dynamicportrange tcp start=19152 num=16384
win10 hyper-v 保留端口占用问题 - luckyangg - 博客园
扩展
命令解析
命令 | 描述 |
---|---|
netstat | 显示协议统计信息和当前TCP/IP网络连接 |
netstat | 查看当前哪些端口正在被使用 |
findstr | 查找字符串,类似Linux下的grep命令 |
tasklist | 显示运行在本地或远程计算机上的所有任务的应用程序和服务列表 |
taskkill | 结束一个或多个任务或进程 |
taskkill /f | 指定强制终止的过程(我觉得是进程) |
taskkill /t | 指定那个终止与父进程一起的所有子进程,常被认为是“树终止” |
taskkill /im | imageName 指定将被终止的过程的图像名称 |