4

Как мой процесс зомби (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 ответ1

2

Процесс Zombie - это фиктивная запись в таблице системных процессов, ожидающая только того, что его родительский процесс запросит и получит новости о его прекращении. Он может только кратковременно удерживать ресурсы, пока система не завершит их освобождение.

Тем не менее, есть одна загвоздка с TCP: это может занять несколько минут, в течение которых порт TCP остается активным для процесса на другом конце, чтобы иметь возможность получать любые последние данные, отправленные несуществующим процессом.

Это время ожидания обычно является изменяемым параметром в операционной системе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .