Мой коллега недавно столкнулся с проблемой, когда процесс, который предположительно умер, все еще был связан с сетевым портом, не позволяя другим процессам связываться с этим портом. В частности, netstat -a -b
сообщалось, что процесс с именем System
PID 4476 имеет открытый порт 60001, за исключением того, что процесс с PID 4476 не существовал, по крайней мере, насколько я мог судить.
Обозреватель процессов и диспетчер задач не перечислили PID 4476 (хотя был другой процесс с именем System
PID 4, у которого был собственный набор TCP-соединений, не включающий 60001). taskkill /PID 4476
Также сообщается, что PID 4476 не может быть найден.
Есть ли способ убить этот таинственный системный процесс, чтобы освободить порт, к которому он в данный момент привязан? Что может вызвать это? Как могут быть процессы, о которых никто из Диспетчера задач, Обозревателя процессов и Taskkill не знает? Перезагрузка смогла решить проблему, но я хотел бы знать, есть ли способ исправить это без перезагрузки.
Ответы:
Я знаю, что это старая ветка, но в случае, если у кого-то еще возникла такая же проблема, у меня была ...
Может случиться так, что у вашего процесса был открыт порт TCP в случае сбоя или выхода из него без явного закрытия. Обычно ОС убирает подобные вещи, но только когда запись процесса исчезает. Хотя процесс может казаться, что он больше не выполняется, существует по крайней мере одна вещь, которая может вести его учет во избежание повторного использования его PID. Это существование дочернего процесса, который не отделен от родителя.
Если ваша программа порождала какие-либо процессы во время работы, попробуйте убить их. Это должно привести к освобождению записи процесса и очистке порта TCP. Очевидно, Windows делает это, когда запись освобождается, а не когда процесс завершается, как я ожидал.
источник
Вы пытались использовать TCPView и закрывать соединение? Я не знаю, покажет ли это связь в сценарии, который вы описываете, потому что у меня никогда не было такого со мной. Но это единственное, о чем я могу думать, если это случится снова.
Каков был процесс - коммерческое программное обеспечение или что-то доморощенное? Похоже, что порт 60001 используется некоторыми троянцами - интересно, мог ли он быть руткитом или чем-то, что могло бы скрыться от ОС? Возможно, вам захочется дать этой машине хороший обзор с AV, возможно, с загрузочного носителя.
источник
Откройте командную строку как администратор
*** Повторяйте шаг 2, пока не останется дочерний процесс
C: \ WINDOWS \ system32> wmic процесс, где (ParentProcessId = 1091) получить Caption, ProcessId
Caption ProcessId
cmd.exe 1328
2.а C: \ WINDOWS \ system32> wmic процесс, где (ParentProcessId = 1328) получить Caption, ProcessId
2.b. повторяйте это до тех пор, пока не будет найдено никаких дочерних процессов
- тогда убей все дочерние процессы
источник
Я сталкивался с той же проблемой ранее, команда netstat -a -n windows выдала мне список открытых портов с идентификатором процесса. После этого я выбрал номер порта, который хотел закрыть соединение, а затем закрыл это соединение с помощью программного обеспечения TCPView. Это сработало для меня.
источник
Если вы пользователь Windows, выполните следующие действия. Шаг 1. Перейдите по этому пути: Панель управления \ Все элементы панели управления \ Администрирование
Шаг 2: Нажмите на услуги
Шаг 3: Остановите нежелательные службы, работающие на желаемом порту.
источник
ps -ef | grep имя процесса
убить связанные процессы
убить -9 пид пид
Работал в моем случае
источник