Как закрыть или (отменить привязку) порт, оставленный открытым мошенническим приложением?


19

Я использую Fedora 13 64bit. Моя программа eclipse запускает сервер на порту 9050, но я закрываю программу, eclipse не может правильно отключить сервер. Перезапуск затмения не имеет никакого эффекта.

Как я могу принудительно закрыть или отсоединить порт из командной строки?

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

Ответы:


10

Единственный способ принудительно закрыть прослушивающий порт - убить процесс, который прослушивает его. Используйте lsof, netstat, fuser- как корень - узнать идентификатор процесса. Как только процесс завершится (сам по себе или будучи убитым), ядро ​​автоматически очистит все открытые сокеты. (Однако могут быть случаи, когда программам будет отказано в прослушивании одного и того же порта в течение нескольких минут; в этом случае все, что вы можете сделать, - это ждать.)


19
lsof -n -i

Найдите процесс, который вы ищете, и убейте его.

Из lsofруководства :

-n Эта опция запрещает преобразование сетевых номеров в имена хостов для сетевых файлов. Запрещение преобразования может заставить lsof работать быстрее. Это также полезно, когда поиск имени хоста не работает должным образом.

-i [i] Этот параметр выбирает список файлов, любой из которых, чей интернет-адрес совпадает с адресом, указанным в i. Если адрес не указан, этот параметр выбирает список всех сетевых файлов Интернета и x.25 (HP-UX).

Тот же ответ на этот вопрос, я думаю.


7
Включите | grep ":9050"(или любой другой номер порта), чтобы легко фильтровать вывод
isaacparrot

9

Вы можете использовать fuserкоманду с помощью -kпереключателя.

Например, чтобы закрыть порт 111, вы можете сделать следующее: fuser -k 111/tcp (это также избавит вас от хлопот, связанных с поиском идентификатора процесса для его уничтожения, как неявно делает fuser)

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


-3

У меня была та же проблема, просто посмотрите на процесс, который прослушивает этот порт с помощью команды cmd на Windows

netstat -a -b

тогда вы можете закрыть его с помощью диспетчера задач


2
Извините, я проголосовал. Вы упоминаете "на Windows". Параметр "-b" для netstat, который показывает имена исполняемых файлов, специфичен для Microsoft Windows. (Варианты netstat Unix могут иметь аналогичную функциональность, но, как правило, не используют этот же параметр.) Однако в вопросе говорилось «Fedora», поэтому задающий этот вопрос искал информацию о Fedora 13 64bit, другой операционной системе. Страница man netstat для Fedora указывает, что использование -pпоказывает PID (который может использоваться для идентификации имени исполняемого файла).
TOOGAM

1
В этом ответе есть несколько ошибок. Ответ содержит грамматическую ошибку, которой можно было избежать. Ответ также не относится к Fedora, которая четко упоминается в первом предложении вопроса. Не похоже, что вопрос не содержал эту информацию, когда этот ответ был представлен 30 минут назад, вопрос не редактировался с июля 2011 года, то есть почти 5 лет назад. Таким образом, я принимаю этот ответ за то, что он есть, ответ «я тоже», который очень редко помогает на самом деле.
Ramhound
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.