netstat中存在的PID在任务管理器中不存在

60
我发现一个运行中的进程,PID为26376,在9001和9002端口监听。当我尝试运行绑定到该端口的程序(作为服务)时,它失败了。
但是,当我尝试使用taskkill /PID命令杀死它时,它说找不到进程26376。同样地,当我尝试在任务管理器中选择“显示所有用户的进程”来查找该进程时,我无法在任何地方找到它。
有人能解释一下吗?这是一个僵尸进程吗?我怀疑在该端口上监听的进程是我之前运行的程序的先前实例,但是是什么导致了这种情况呢?
编辑: Sysinternals TCPView显示该进程不存在。 Sysinternals Process Explorer不显示该进程。 Tasklist不显示该进程。


4
这篇文章似乎可以解决您的问题:http://superuser.com/questions/191416/pid-number-in-task-manager-cant-be-found。 - zzk
1
进程资源管理器和任务列表都没有显示它,只有TCPView显示该进程不存在,但端口仍然被占用。 - shawn
它被绑定了多久?这可能是较长的套接字选项。 - cdarke
是的,同一个程序正在另一台机器上运行,并通过SCM RMI启动它。 - shawn
@shawn John,我也遇到了同样的问题,请告诉我如何解决这个问题。我的应用程序也会创建子进程来使用7za压缩和解压文件。虽然子进程不直接使用套接字,但它们会继承套接字,因为CreateProcess bInheritHandles=TRUE。我需要将此标志设置为FALSE吗?请建议。 - Vikram Ranabhatt
显示剩余5条评论
4个回答

6
你不需要使用任务管理器来追踪此信息。只需运行 netstat -b 命令,它将显示与 PID 关联的 exe 文件。

1
注意:必须以管理员身份运行cmd提示符才能执行此操作。 - Tom

5

在我的情况下,杀死所有与初始进程拥有相同用户的conhost.exe实例释放了该端口。


1
对我没有用!端口仍在使用中,并且通过netstat报告了PID,但它在任务管理器中没有显示,并且无法使用taskkill和tskill终止它。 - Alireza Mirian

1

(改进自@mfck的答案)

  1. 结束所有名为cmd.exe的进程
  2. 结束所有名为conhost.exe

0

这对通配地址(0.0.0.0)上的“LISTENING sockets”无效。它们没有与特定网络接口相关联。 - cdhowie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接