我试图为我的应用服务器使用端口80,但当我执行netstat -aon时,我得到:
TCP 0.0.0.0:80 0.0.0.0:0监听4
当我在任务管理器中查找进程时,它显示PID 4是SYSTEM,就是这样。没有扩展…什么都没有。“系统”。这是怎么回事?
我害怕结束这个过程,我该怎么办?
我试图为我的应用服务器使用端口80,但当我执行netstat -aon时,我得到:
TCP 0.0.0.0:80 0.0.0.0:0监听4
当我在任务管理器中查找进程时,它显示PID 4是SYSTEM,就是这样。没有扩展…什么都没有。“系统”。这是怎么回事?
我害怕结束这个过程,我该怎么办?
当前回答
如果您使用雷蛇产品并在PC上安装雷蛇Synapse软件,它也会阻塞端口80。
它不包括在netstat命令中,因此我无法排除故障。由于软件中包含了许多服务,所以我无法分析是哪个服务阻塞了端口。卸载Razer Synapse后,我可以在Windows 10上重新启动Apache服务器。
其他回答
一个名为“Web部署代理服务”(MsDepSvc)的新服务也可以触发PID=4的“系统”在80端口上监听。
我知道这些答案是对的,但我的服务。MSC没有展示这些服务,但这确实奏效了:
sc stop "MsDepSvc"
sc config "MsDepSvc" start= disabled
以编程方式标识流程
到目前为止,所有的答案都要求用户进行一些交互操作。这就是当netstat显示PID 4时如何找到PID,而不需要打开一些GUI或处理有关依赖服务的对话。
$Uri = "http://127.0.0.1:8989" # for example
# Shows processes that have registered URLs with HTTP.sys
$QueueText = netsh http show servicestate view=requestq verbose=yes | Out-String
# Break into text chunks; discard the header
$Queues = $QueueText -split '(?<=\n)(?=Request queue name)' | Select-Object -Skip 1
# Find the chunk for the request queue listening on your URI
$Queue = @($Queues) -match [regex]::Escape($Uri -replace '/$')
if ($Queue.Count -eq 1)
{
# Will be null if could not pick out exactly one PID
$ProcessId = [string]$Queue -replace '(?s).*Process IDs:\s+' -replace '(?s)\s.*' -as [int]
if ($ProcessId)
{
Write-Verbose "Identified process $ProcessId as the HTTP listener. Killing..."
Stop-Process -Id $ProcessId -Confirm
}
}
那可真让我受不了。我讨厌HttpListener,希望我只使用Pode。
有许多服务可以在windows上监听端口80。
幸运的是,你可以通过简单的控制台命令来检测并停止它们:
NET stop HTTP
当你启动它时,你会首先得到列表:
为了避免将来出现这种问题,请访问本地服务并禁用所列出的服务。
注意:有些服务会立即重新启动,只需要运行几次“NET stop HTTP”。
IP地址为0.0.0.0,state = LISTENING:表示80端口正在监听所有接口(未被使用)
如何读取NETSTAT -AN结果:
https://sites.google.com/site/xiangyangsite/home/technical-tips/linux-unix/networks-related-commands-on-linux/how-to-read-netstat--an-results