Trovare (e uccidere) il processo che blocca la porta 3000 su Mac

Come faccio a trovare (e uccidere) i processi che ascoltano/utilizzano le mie porte tcp? Sono su Mac OS X.

A volte, dopo un crash o qualche bug, la mia applicazione rails blocca la porta 3000. Non riesco a trovarla usando ps -ef...

Quando faccio

rails server

Ottengo

Indirizzo già in uso - bind(2) (Errno::EADDRINUSE)

Aggiornamento 2014:

Per completare alcune delle risposte qui sotto: Dopo aver eseguito i comandi kill, potrebbe essere necessario cancellare il file pid `rm ~/mypath/myrailsapp/tmp/pids/server.pid

Soluzione
  1. Puoi provare con netstat.

     netstat -vanp tcp | grep 3000
  2. Per macOS El Capitan e successivi (o se il vostro netstat non supporta -p), usate lsof.

     sudo lsof -i tcp:3000
  3. Per Centos 7 usate

     netstat -vanp --tcp | grep 3000
Commentari (14)

Puoi usare lsof -i:3000.

Questo è "List Open Files". Questo ti dà un elenco dei processi e quali file e porte usano.

Commentari (2)
lsof -P | grep ':3000' | awk '{print $2}'

Questo vi darà solo il pid, testato su MacOS.

Commentari (5)