16

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

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

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

4 ответа4

16
lsof -n -i

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

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

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

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

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

6

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

4

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

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

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

-3

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

netstat -a -b

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

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