僵尸进程如何占用 TCP 端口等系统资源?

僵尸进程如何占用 TCP 端口等系统资源?

我的僵尸进程(示例中的 PID 为 5693)如何能够占用 TCP 端口等资源(示例中的端口为 21050,但在我实际的情况下,它占用了更多资源,如 pty 和其他文件描述符)?我如何在不重启的情况下释放 TCP 端口?我甚至不明白进程如何会处于这种状态(我的意思是,既是僵尸进程又仍然占用资源)。

[root@mycomputer ~]# ps -fe | grep 5693
user      5693     1   0 Apr03 ?        00:01:12 [myproc] <defunct>
user      5835  5693   0 Apr03 ?        00:00:00 [mysubproc] <defunct>
root      58888 58050  0 17:39 pts/1    00:00:00 grep 5693
[root@mycomputer ~]# lsof | grep  21050
Systemtas 5693        user   15u     IPv4            3853742       0t0        TCP *:21050 (LISTEN)
[root@mycomputer ~]#

答案1

A僵尸进程是系统进程表中的虚拟条目,只等待其父进程请求并接收其消亡的消息。它只能短暂地占用资源,直到系统释放所有资源。

然而,TCP 有一个问题:这可能需要几分钟的时间,在此期间 TCP 端口保持活动状态,以便另一端的进程能够接收到已停止的进程发送的任何最后数据。

这个等待时间通常是操作系统中可修改的参数。

相关内容