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

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

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

  • Последствия постоянного хранения неконфигурированных ссылок
  • Создание виртуального микрофона
  • QoS с TC qdiscs: возможно ли, чтобы ВСЕ исходящие соединения имели ограничение скорости x на уникальный IP?
  • btrfs и опция удаления диска на ssd
  • Как я могу получить настенные часы времени выполнения процесса?
  • Правило управления IPTable для отметки трафика для таблицы маршрутов
  • netstat -nlp|grep 9000 

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

      tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 

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

  • Почему (free_space + used_space)! = Total_size в df?
  • Почему корневой каталог обозначается знаком /?
  • Linux File Versioning?
  • Перемещенный ящик и другие папки! Как их вернуть?
  • Как создать и автоматически синхронизировать «объединенный» каталог из нескольких других каталогов без дублирования файлов?
  • Какой дистрибутив будет использовать меньше ресурсов для ноутбука?
  • 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 .

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