本文编写于 465 天前,最后修改于 252 天前,其中某些信息可能已经过时。

环境:Windows10

情景:在设置nginx反代理的时候突然发现无法启动nginx进程了

查错:查看nginx的error log最新行如下

2019/04/26 12:00:00 [emerg] 16396#11812: bind() to 0.0.0.0:443 failed (10013: An attempt was made to access a socket in a way forbidden by its access permissions)

问题:显然是443端口被占用

解决:打开命令行环境( Powershell ),先这样然后那样就搞定了(雾)

//第一步,使用netstat查看进程pid同时 "|" 连接findstr过滤查找出对应占用端口

命令>>netstat -ano | findstr "443"
回显>>TCP    0.0.0.0:443    0.0.0.0:0              LISTENING       7900

//第二步,查看对应进程是啥

命令>>tasklist  | findstr "7900"
回显>>vmware-hostd.exe      7900 Services         0             9,584 K

//噗,是Vmware虚拟机的控制进程,用不上,关了关了
命令>>taskkill /F /PID 7900
//ok
解决2:关了Vmware的服务自启

命令行总结:

//端口占用解决
netstat -ano | findstr "%port%"
tasklist  | findstr "%pid%"
taskkill /F /PID "%pid%"

应用
adb冲突 -> 5037端口占用 -> 以上方法解决 #2019525
steamcommunity302Fix冲突 -> 以上方法解决 #2019527

脚本:(UAC申请权限 -> 杀进程 -> 快捷启动)

@echo off
cd /d "%~dp0"
cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nul
if %errorlevel%==0 goto Admin
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%\getadmin.vbs"
echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%\getadmin.vbs"
echo WScript.Quit >>"%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" /f
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
exit

:Admin
taskkill /f /im "vmware-hostd.exe"
start /min "" "<快捷启动程序PATH>"
exit /b