Поиск PID процесса с использованием определенного порта?

Я устанавливаю hadoop в свою систему Ubuntu. Когда я его запускаю, он сообщает, что порт 9000 занят.

Я использовал:

netstat -nlp|grep 9000 

чтобы увидеть, существует ли такой порт, и я получил это:

  tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 

Но как я могу получить PID процесса, который его удерживает?

  • Как узнать, для чего этот процесс?
  • ATOP показывает красную линию vmcom и vmlim. Что это значит?
  • Отслеживать процесс, который имеет notty
  • Как скрыть определенный процесс?
  • Как получить PPID с помощью PS с использованием опций BSD
  • Просмотр предков текущего процесса и формирование результата
  • Текущие переменные среды процесса
  • Почему у меня есть другой статус выхода для ps | grep в скрипте?
  • 5 Solutions collect form web for “Поиск PID процесса с использованием определенного порта?”

    В Linux вы должны быть root или другим пользователем, чтобы получить информацию о процессе для процессов, запущенных как другие пользователи, поэтому добавление sudo – это большая часть того, что вам нужно. В дополнение к этому, в современных Linux-системах ss – это инструмент, который можно использовать для этого:

     $ sudo ss -lptn 'sport = :80' State Local Address:Port Peer Address:Port LISTEN 127.0.0.1:80 *:* users:(("nginx",pid=125004,fd=12)) LISTEN ::1:80 :::* users:(("nginx",pid=125004,fd=11)) 

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

     $ sudo netstat -nlp | grep :80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 125004/nginx 

    Вы также можете использовать lsof:

     $ sudo lsof -n -i :80 | grep LISTEN nginx 125004 nginx 3u IPv4 6645 0t0 TCP 0.0.0.0:80 (LISTEN) 

    Также вы можете использовать утилиту lsof . Нужно быть root.

     # lsof -i :25 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME exim4 2799 Debian-exim 3u IPv4 6645 0t0 TCP localhost:smtp (LISTEN) exim4 2799 Debian-exim 4u IPv6 6646 0t0 TCP localhost:smtp (LISTEN) 

    Я использую «CentOS 7 минимальный», который не имеет ни netstat ни lsof . Но у многих дистрибутивов Linux есть команда статистики сокетов (т.е. ss ).

    Вот пример выполнения:

     # ss -tanp | grep 6379 LISTEN 0 128 127.0.0.1:6379 *:* users:(("redis-server",pid=2531,fd=4)) 

    Также вы можете использовать fuser :

     fuser -v -n tcp 22 

    Выход :

      USER PID ACCESS COMMAND 22/tcp: root 598 F.... sshd 

    Выполнение команды с помощью sudo даст вам PID . На моей машине разработки я получаю:

     $ netstat -nlp | grep 8080 

    tcp6 0 0 ::: 8080 ::: * LISTEN

     $ sudo netstat -nlp | grep 8080 

    tcp6 0 0 ::: 8080 ::: * LISTEN 16449 / java

    И, как упоминалось в других ответах, вы также можете использовать команды ss или lsof .

    Interesting Posts

    Можете ли вы указать окно, чтобы появиться за другими?

    Fish-Shell не сохранит мои псевдонимы

    Существуют ли какие-либо настройки разрешений для проверки атрибутов (rwx) файла?

    `diff -y file- {a, b} | less` и DOS.

    Получение информации из журналов с использованием grep, sed, awk и cut

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

    автоматизировать процесс фиксации всех неработающих ссылок

    как установить кавычки вокруг переменной, чтобы программы рассматривали их как кавычки

    Должен ли я понизить gcc для устаревшего кода?

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

    Код работает вручную на терминале, но не может запускать скрипт

    NERDTree не создает окно при открытии, когда файл не сохраняется

    Как запланировать что-то запускать один раз с помощью anacron?

    Является ли% a вариантом stat?

    Как предотвратить Pulseaudio при сбое при запуске виртуальной машины из VirtualBox?

    Linux и Unix - лучшая ОС в мире.