Как я могу убить процесс, выполняющийся на определенном IP-адресе и порту?

Мне было интересно, есть ли способ убить процесс, который выполняется на определенном IP-порту и в Ubuntu 14.04 на локальном IP-адресе и порту? Предпочтительно, это было бы в одной команде, но если нет, скрипт bash также был бы прекрасен.

5 Solutions collect form web for “Как я могу убить процесс, выполняющийся на определенном IP-адресе и порту?”

Есть, вероятно, более чистые способы, но что-то вроде:

netstat -lnp | grep 'tcp .*127.0.0.1:9984' | sed -e 's/.*LISTEN *//' -e 's#/.*##' | xargs kill 

Используя ss мы можем получить подробную информацию о процессах / соединениях, которые прослушиваются на определенном IP и порту, для src 127.0.0.1 и порта 80 :

 sudo ss -lp '( dport = :80 )' src 127.0.0.1 

то мы можем получить только PID с помощью grep и убить их всех с помощью xargs и kill .

 sudo ss -lp '( dport = :80 )' src 127.0.0.1 | grep -Po "(?<=pid=).*(?=,)"\ | sort | uniq | xargs kill 

Вы также можете использовать -a вместо -l чтобы получить список всех прослушивающих и не прослушивающих сокетов.

fuser на Linux имеет опцию, которая делает именно то, что вы ищете.

Например, fuser 80/tcp будет печатать PID процесса, связанного с этим портом, и fuser -k 80/tcp убьет этот процесс.

В linux, как root , вы можете использовать либо

 ss -ptan 

или

 netstat -ntulp 

для получения списка всех запущенных процессов, которые «прослушивают» (в этом случае tcp, замените «t» на «u» для udp).

Таким образом, один лайнер, чтобы убить процесс, прослушивающий порт 80, выглядел бы примерно так:

 ss -tanp | grep 80 | head -1 | sed 's_.*pid=\(.*\),.*_\1_' | xargs kill 

Единственный IP-процесс, который может выполняться на локальной машине, – это 127.0.0.1 , lo , loopback-устройство, известное как localhost . Порты могут быть перенаправлены на общедоступный IP-адрес с сетевыми конфигурациями.

Обычно я использую sudo lsof -i :<port> чтобы узнать, что вызывает EADDRINUSE, потому что он быстрее набирается .

 sudo lsof -i :443 | tail -1 | cut -f2 -d' ' | xargs kill 

lsof процесс, выполняющийся на порту 443, если ваш lsof вывод, например:

 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME python3 32233 cat 4u IPv4 24123106 0t0 TCP *:http-alt (LISTEN) 

Из lsof --help :

 -ii select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list] 
  • Как узнать время загрузки на Ubuntu
  • Выделение Swap в 64-битном UBUNTU 13.04
  • Отсутствие Ubuntu в меню загрузки после установки Cent OS 6
  • включить / отключить службу NTP на Ubuntu 12.04
  • Использование внешнего жесткого диска для загрузки 2 разных компьютеров с различным оборудованием
  • Подключение удаленно к Red Hat
  • Как я могу запустить / usr / bin / Xorg без sudo?
  • Ubuntu 14.04.2 LTS: для пользователей NIS SSH работает, но консольный вход и sudo fail
  • USB для Serial в Chrubuntu - / dev / ttyUSB0 отсутствует
  • Как запустить Unicorn с помощью systemd / systemctl?
  • Openvpn исключает ip в пуле
  • Неверная конфигурация iperf?
  • Linux и Unix - лучшая ОС в мире.