我试图为我的应用服务器使用端口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,就是这样。没有扩展…什么都没有。“系统”。这是怎么回事?
我害怕结束这个过程,我该怎么办?
当前回答
以编程方式标识流程
到目前为止,所有的答案都要求用户进行一些交互操作。这就是当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。
其他回答
即使在“显示来自所有用户的进程”上放置了复选标记,PID=4也不会显示在任务管理器中。只有一个用户。
但是,netstat -b显示指向同一PID=4的多个连接,在此计算机上显示如下所示。
我只选择了那些与TCP协议有关的。
这是在解决IIS的问题时获得的,IIS在尝试了许多其他人之后没有开始。我认为你不应该停止这个过程。
尝试netstat -b,这可能会对情况有所帮助(显示什么.exe正在使用端口)。祝你好运。
如果你运行的是Windows Server 2012 R2,那么确保去掉工作文件夹:http://blogs.technet.com/b/filecab/archive/2013/10/15/windows-server-2012-r2-resolving-port-conflict-with-iis-websites-and-work-folders.aspx 删除文件服务器下的工作文件夹功能对我有用。
这对我来说很管用:
右键单击我的电脑。 选择管理。 双击“服务和应用程序”。 然后双击Services。 右击“万维网出版服务”。 选择停止。
输入netstat -a -n -b -o |more
如果停止万维网出版服务有帮助的话
然后在IIS管理器中查看每个站点的绑定设置,通过选择一个站点并在侧面板上单击绑定。然后如果需要,将端口80更改为其他端口。