Найти (и убить) процесс блокировки порта 3000 на Mac

Как найти процессы, которые прослушивают/используют мои TCP-порты? Я нахожусь на mac os x.

Иногда, после сбоя или какой-то ошибки, мое приложение rails блокирует порт 3000. Я не могу найти его с помощью ps -ef... Как найти тупую вещь и убить ее, зверски...?

При выполнении

rails server

Я получаю

Адрес уже используется - bind (2) (Errno:: EADDRINUSE)

Обновление 2014 года:

Чтобы выполнить некоторые из приведенных ниже ответов: После выполнения команд kill может потребоваться удаление файла pid rm ~/mypath/myrailsapp/tmp/pids/server.pid

813
задан 04 окт. '10 в 15:19
источник поделиться
13 ответов
  • Вы можете попробовать netstat

    netstat -vanp tcp | grep 3000
    
  • Для OSX El Capitan и более нового (или если netstat не поддерживает -p), используйте lsof

    sudo lsof -i tcp:3000 
    
1321
ответ дан 04 окт. '10 в 15:48
источник

Поиск:

[sudo] lsof -i :3000

Убить:

kill -9 <PID>
903
ответ дан 09 сент. '13 в 23:58
источник

Вы можете использовать lsof -i:3000.

Это "Список открытых файлов". Это дает вам список процессов и файлов и портов, которые они используют.

67
ответ дан 04 окт. '10 в 15:36
источник

Ничего выше не работало для меня. Любой, у кого есть опыт, может попробовать следующее (работал у меня):

Run:

lsof -i :3000 (where 3000 is your current port in use)

затем проверьте состояние сообщенного PID:

ps ax | grep <PID>

наконец, "изгоните его":

kill -QUIT <PID>
64
ответ дан 07 марта '13 в 23:24
источник

Один лайнер для извлечения PID процесса с использованием порта 3000 и его уничтожения.

lsof -ti:3000 | xargs kill

Флаг -t удаляет все, кроме PID, с выхода lsof, что позволяет легко его убить.

53
ответ дан 06 авг. '16 в 0:03
источник

В .bash_profile создайте ярлык для terminate процесса 3000:

terminate(){
  lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9 
}

Затем вызовите $terminate, если он заблокирован.

41
ответ дан 16 мая '13 в 12:17
источник
lsof -P | grep ':3000' | awk '{print $2}'

Это даст вам только pid, протестированный на MacOS.

31
ответ дан 04 авг. '12 в 0:14
источник

Выполнить в командной строке OS-X El Captain:

kill -kill `lsof -t -i tcp:3000`

Тесная опция lsof возвращает только PID.

19
ответ дан 23 июня '16 в 21:15
источник

Найти открытое соединение

lsof -i -P | grep -i "слушать"

Убить по идентификатору процесса

kill -9 'PID'

18
ответ дан 17 июля '16 в 14:10
источник

Один из способов убить процесс на порту - использовать библиотеку python: freeport (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
18
ответ дан 13 февр. '16 в 1:14
источник

Возможные способы достижения этого:

верхний

Верхняя команда - это традиционный способ просмотра использования ваших системных ресурсов и просмотра процессов, которые занимают большинство системных ресурсов. В верхней части отображается список процессов, в которых используются самые популярные процессоры.

пс

Команда ps перечисляет запущенные процессы. Следующая команда перечисляет все процессы, запущенные в вашей системе:

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 
8
ответ дан 29 янв. '17 в 14:34
источник

вы можете использовать команду

lsof -h

Использование этой команды для поиска порта

-i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]

В вашем случае введите

lsof -i :3000
0
ответ дан 29 окт. '17 в 20:55
источник

Вы должны попробовать этот код с помощью терминала:

$ killall -9 ruby
0
ответ дан 30 окт. '17 в 11:03
источник

Другие вопросы по меткам или Задайте вопрос