Освобождение порта TCP / IP?

146

netstat -tulnap показывает, какие порты используются. Как освободить порт в Linux?

informatik01
источник

Ответы:

214

Как уже говорили другие, вам придется убить все процессы, которые прослушивают этот порт. Самый простой способ сделать это - использовать команду fuser (1). Например, чтобы увидеть все процессы, прослушивающие запросы http на порту 80 (запустите от имени пользователя root или используйте sudo):

# fuser 80/tcp

Если вы хотите убить их, просто добавьте опцию -k.

узи
источник
1
Я обнаружил, что отправка запроса в порт также очищает его (хотя я не эксперт по Linux)
Matej
1
Чтобы установить fuser в Debian: sudo apt-get install psmisc ( bitflop.com/document/107 )
Корнеил
1
Это сработало, но мне пришлось установить psmisc и на CentOs 7 ( sudo yum install psmisc)
Марлон Бернардес
1
kill -9 $(fuser 80/tcp 2>/dev/null)
Hanynowsky
76

Чтобы убить определенный порт в Linux, используйте команду ниже

sudo fuser -k Port_Number/tcp

замените Port_Number вашим занятым портом.

Анил Чахал
источник
6
Это фактически убивает процесс, который открыл порт, а не сам порт.
Винайц
16

Вы можете использовать tcpkill(часть dsniffпакета), чтобы уничтожить соединение, которое находится на нужном порту:

sudo tcpkill -9 port PORT_NUMBER
AlexT
источник
11
это просто зависает$ sudo tcpkill -9 port 5432 tcpkill: listening on lxcbr0 [port 5432]
Anentropic
16

В типе терминала:

netstat -anp|grep "port_number"

Он покажет детали порта. Перейти к последнему столбцу. Это будет в этом формате. Например: - PID / Java

затем выполните:

kill -9 PID. Worked on Centos5

Для MAC:

lsof -n -i :'port-number' | grep LISTEN

Образец ответа:

java   4744 (PID)  test  364u  IP0 asdasdasda   0t0  TCP *:port-number (LISTEN)

и затем выполните:

kill -9 PID 

Работал на Macbook

user2332505
источник
очевидно, это не сработает, если столбец PID для этого порта пуст
Anentropic
1
... и это происходит, если у вас нет разрешения на просмотр процесса ... попробуйте sudo netstatна самом деле увидеть PID :)
Anentropic
Я пытался убить порт на экземпляре amazon ec2 через putty cli. Навсегда сказал, что у него нет запущенных процессов, но порт (4200 для углового приложения) все еще открыт. Это единственная команда, которая работала для меня.
vtechmonkey
9

Команда "netstat --programs"выдаст вам информацию о процессе, если вы являетесь пользователем root. Тогда вам придется убить «оскорбительный» процесс, который вполне может начаться снова, просто чтобы вас раздражать :-).

Чего вы на самом деле пытаетесь достичь здесь? Решения могут отличаться в зависимости от процессов, содержащих эти порты.

paxdiablo
источник
8

Чтобы проверить все порты:

netstat -lnp

Чтобы закрыть открытый порт:

fuser -k port_no/tcp

Пример:

fuser -k 8080/tcp

В обоих случаях вы можете использовать sudoкоманду при необходимости.

Винаяк
источник
7

Убейте процесс, который прослушивает рассматриваемый порт. Я считаю, что netstat показывает вам идентификаторы процессов.

Глеб
источник
3
netstat -anp | grep <порт> последний столбец имеет процесс
user1747935
2

Если вы действительно хотите немедленно завершить процесс, вы отправляете ему сигнал KILL вместо сигнала TERM (последний - запрос на остановку, первый вступит в силу немедленно без какой-либо очистки). Это легко сделать:

kill -KILL <pid>

Имейте в виду, однако, что в зависимости от программы, которую вы останавливаете, ее состояние может быть сильно повреждено при этом. Обычно вы хотите отправить сигнал KILL только тогда, когда обычное завершение не работает. Мне интересно, в чем заключается основная проблема, которую вы пытаетесь решить, и является ли убийство правильным решением.

Поль де Вриз
источник
0

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

Тило Пруц
источник
-14

Выключение компьютера всегда убивает процесс для меня.

Zonxwedop
источник
выключение сервера редко.
ваки
24
ты получил свой "самый смешной" значок?
jplandrain
Нет необходимости выключать компьютер.
Анил Чахал
Лучшая идея в истории
Валентин Руж
11
в отличие от некоторых других ответов, это, безусловно, будет работать
Anentropic