Как Вы освобождаете порт, сохраненный открытым мертвым процессом?

  • / домой или/home/mike, который монтирует тот же раздел как "/"?
  • Вы могли также отправить вывод от lsattr команды /home/mike/test.txt?
64
задан 14 September 2010 в 17:35
6 ответов

Вы пытались использовать TCPView и закрыть соединение? Я не знаю, покажет ли это соединение в сценарии, Вы описываете, потому что я никогда не имел, которые происходят со мной. Но это - единственная вещь, о которой я могу думать, если это происходит снова.

То, каков был процесс - было им коммерческое программное обеспечение или что-то собственной разработки? Кажется, что порт 60001 используется некоторыми Троянцами - интересно возможно, ли это, был руткит или что-то, что могло бы спрятаться от ОС? Мог бы хотеть дать той машине хороший поверхностный осмотр с AV, возможно, что-то от загрузочных медиа.

6
ответ дан 28 November 2019 в 19:31
  • 1
    нет, мы не попробовали TCPView; я буду иметь это в виду для будущего, если это когда-нибудь произойдет снова. Программное обеспечение является нашим программным обеспечением для внутреннего пользования, которое использует порт 60001 - я почти уверен, что процесс, содержащий открытый порт, был предыдущим экземпляром нашего программного обеспечения, которое так или иначе не вполне полностью умерло. Это препятствовало тому, чтобы другая копия программного обеспечения запустилась. –  Adam Rosenfield 14 September 2010 в 17:51
  • 2
    Ваше приложение может установить опцию SO_REUSEADDR сокета к истинному прежде, чем связать его. Это должно решить Вашу проблему (это еще более или менее обязательно на *, отклоняют), –  Stephane 14 September 2010 в 18:06

Я знаю, что это - старый поток, но в случае, если у кого-либо еще есть та же проблема, я имел...

Что может происходить, что Ваш процесс имеется порт TCP, открытый, когда он отказал или иначе вышел, явно не закрывая его. Обычно ОС очищает эти виды вещей, но только когда запись процесса уходит. В то время как процесс, может казаться, не работает больше, существует по крайней мере одна вещь, которая может вести учет его вокруг для предотвращения повторного использования его PID. Это - существование дочернего процесса, который не отсоединяется от родителя.

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

58
ответ дан 28 November 2019 в 19:31

ps -ef | grep processname

kill связанные процессы

kill -9 pid pid

Работает в моем случае

-5
ответ дан 28 November 2019 в 19:31

Я уже сталкивался с той же проблемой раньше, команда netstat -a -n windows выдала мне список открытых портов с идентификатором процесса. Исходя из этого, я выбрал номер порта, на котором я хотел закрыть соединение, а затем закрыл это соединение с помощью программного обеспечения TCPView. У меня это сработало.

1
ответ дан 28 November 2019 в 19:31

Если вы пользователь Windows, выполните следующие действия. Шаг 1: перейдите по этому пути: Панель управления \ Все элементы панели управления \ Администрирование

Шаг 2: Щелкните службы

Шаг 3: Остановите нежелательные службы, работающие на желаемом порту.

-4
ответ дан 28 November 2019 в 19:31

Открыть командная строка от имени администратора

  1. C: \ WINDOWS \ system32> netstat -ano | findstr: 7895

*** Повторяйте шаг 2 до тех пор, пока не исчезнут дочерние процессы

  1. C: \ WINDOWS \ system32> wmic process, где (ParentProcessId = 1091) получить Caption, ProcessId

    Caption ProcessId

    cmd .exe 1328

2.a. C: \ WINDOWS \ system32> wmic процесс, где (ParentProcessId = 1328) получить Заголовок, ProcessId

  Caption  ProcessId

  conhost.exe  1128

2.b. повторяйте это, пока не будут найдены дочерние процессы

-Затем убейте все дочерние процессы

  1. C: \ WINDOWS \ system32> taskkill / F / PID 1128 УСПЕХ: Процесс с PID 9500 был прекращен.
3
ответ дан 28 November 2019 в 19:31

Теги

Похожие вопросы