Как найти (и убить) процессы, которые прослушивают/используют мои порты tcp? Я работаю на mac os x.
Иногда, после сбоя или какой-то ошибки, мое приложение rails блокирует порт 3000. Я не могу найти его с помощью ps -ef...
При выполнении
rails server
я получаю
Адрес уже используется - bind(2) (Errno::EADDRINUSE)
Обновление 2014 года:
Чтобы дополнить некоторые ответы ниже: После выполнения команд kill может потребоваться удаление файла pid rm ~/mypath/myrailsapp/tmp/pids/server.pid
.
Вы можете попробовать netstat
netstat -vanp tcp | grep 3000
Для macOS El Capitan и новее (или если ваш netstat не поддерживает -p
), используйте lsof
.
sudo lsof -i tcp:3000
Для Centos 7 используйте
netstat -vanp --tcp | grep 3000
Найти:
[sudo] lsof -i :3000
Убить:
kill -9 <PID>
Ничто из вышеперечисленного не помогло мне. Любой другой человек с моим опытом может попробовать следующее (сработало у меня):
Run:
lsof -i :3000 (where 3000 is your current port in use)
затем проверьте статус сообщенного PID
ps ax | grep <PID>
наконец, "прощай":
kill -QUIT <PID>
Это одной командной строки легко запомнить:
справку по NPX убить-порт 3000
Для более мощного инструмента поиска:
справку по NPX fkill-Кинк
ЗЫ: они используют сторонние скрипты JavaScript пакеты. справку по NPX
поставляется с Node.js.
Простое решение:
Для одного порта:
kill $(lsof -ti:3000) #3000 is the port to be freed
Убить несколько портов с одной командной строки:
kill $(lsof -ti:3000,3001) #3000 and 3001 are the ports to be freed
как lsof -ти:3000
82500 (идентификатор процесса)
как lsof -ти:3001
82499
как lsof -ти:3001,3000
82499 82500
убить $(как lsof -ти:3001,3000)
Завершает как 82499 и 82500 процессов в одной команде.
Вы можете использовать это в пакет.сценариев JSON`, а также:
в "сценарии" по -: { на "Пуск" и: "Не убивай $(как lsof -ти:3000,3001) и усилитель; & НПМ начать и" }
Принудительно убить процесс, используйте следующую команду
lsof -n -i4TCP:3000
Где 3000-это номер порта процесса выполняется в
это возвращает идентификатор процесса(PID) и запустить
kill -9 "PID"
Заменить пид с номером, который вы получите после выполнения первой команды
Один из способов убить процесс на порту используется библиотека Python: Фрипорт (https://pypi.python.org/pypi/freeport/0.1.9) . После установки, просто:
# install freeport
pip install freeport
# Once freeport is installed, use it as follows
$ freeport 3000
Port 3000 is free. Process 16130 killed successfully
Найти выход
как lsof -я -П | грэп -я на "слушать"и
Убить по ID процесса
убить -9 'ПИД'
Найти PID и убить процесс.
lsof -ti:3000 | xargs kill
Найти и убить:
Это одной командной строке легко и правильно работает.
kill -9 $(lsof -ti tcp:3000)
Возможные пути достижения этой цели:
топ
Топ-команда-это традиционный способ, чтобы просмотреть использование ресурсов вашей системы и увидеть процессы, которые занимают больше всего ресурсов системы. Верхний отображает список процессов, с использованием наиболее процессор на самом верху.
ПС
Эта команда выводит список запущенных процессов ПС. Следующая команда выводит список всех процессов, запущенных на вашей системе:
ps -A
Вы также можете перенаправить вывод через grep для поиска конкретных процессов без использования каких-либо других команд. Следующая команда будет искать процесс Firefox:
ps -A | grep firefox
Самый распространенный способ передачи сигналов в программы является команда Kill.
kill PID_of_target_process
как lsof
Список всех открытых файлов и процессов, открыли их.
lsof -i -P | grep -i "listen"
kill -9 PID
или
lsof -i tcp:3000
Эти две команды поможет вам найти и убить процесс сервера
- как lsof -жни "энвила" ПТС:3000
- убийство -9 PID