我试图为我的应用服务器使用端口80,但当我执行netstat -aon时,我得到:

TCP 0.0.0.0:80 0.0.0.0:0监听4

当我在任务管理器中查找进程时,它显示PID 4是SYSTEM,就是这样。没有扩展…什么都没有。“系统”。这是怎么回事?

我害怕结束这个过程,我该怎么办?


当前回答

即使在“显示来自所有用户的进程”上放置了复选标记,PID=4也不会显示在任务管理器中。只有一个用户。

但是,netstat -b显示指向同一PID=4的多个连接,在此计算机上显示如下所示。

我只选择了那些与TCP协议有关的。

这是在解决IIS的问题时获得的,IIS在尝试了许多其他人之后没有开始。我认为你不应该停止这个过程。

其他回答

在阅读了这个问题的所有答案并尝试了所有方法之后,我卸载并重新安装了XAMPP,它工作正常。

以下五个步骤可以很容易地解决这个问题:

开放服务 右击万维网出版服务 点击停止

为防止此类问题再次发生:

转到属性 修改“启动类型”为“手动”

维奥拉准备好了!

有关根本原因的更多信息:https://serverfault.com/questions/65717/port-80-is-being-used-by-system-pid-4-what-is-that

以编程方式标识流程

到目前为止,所有的答案都要求用户进行一些交互操作。这就是当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。

输入netstat -a -n -b -o |more

如果停止万维网出版服务有帮助的话

然后在IIS管理器中查看每个站点的绑定设置,通过选择一个站点并在侧面板上单击绑定。然后如果需要,将端口80更改为其他端口。

Netsh HTTP Show Urlacl

这个命令在前面的评论中提到过,但我想把它作为一个答案。它将为您提供系统中所有保留的url。如果您查看URL中所有带有“80”的记录,您就会得到您的答案。

例如,在我的例子中,我得到:

Reserved URL: http://+:80/Temporary_Listen_Addresses/
        User: \Everyone
            Listen: Yes
            Delegate: No
            SDDL: D:(A;;GX;;;WD)

Reserved URL: http://+:80/0131501b-d67f-491b-9a40-c4bf27bcb4d4/
        User: NT AUTHORITY\NETWORK SERVICE
            Listen: Yes
            Delegate: No
            SDDL: D:(A;;GX;;;NS)

在快速谷歌搜索后,我了解到“NT AUTHORITY\NETWORK SERVICE”属于SQL Server。所以我去了服务,停止SQL Server报告服务,端口80是空闲的,因为我检查netstat -a -b