Znajdź (i zabij) proces blokujący port 3000 na komputerze Mac

Jak mogę znaleźć (i zabić) procesy, które nasłuchują/używają moich portów tcp? Pracuję na systemie mac os x.

Czasami, po awarii lub jakimś błędzie, moja aplikacja railsowa blokuje port 3000. Nie mogę go znaleźć używając ps -ef...

Kiedy robię

rails server

Otrzymuję

Adres już w użyciu - bind(2) (Errno::EADDRINUSE)

Aktualizacja 2014:

Aby uzupełnić niektóre z poniższych odpowiedzi: Po wykonaniu komend kill, usunięcie pliku pid może być konieczne rm ~/mypath/myrailsapp/tmp/pids/server.pid.

Rozwiązanie
  1. Możesz spróbować netstat.

     netstat -vanp tcp | grep 3000
  2. Dla macOS El Capitan i nowszych (lub jeśli twój netstat'nie obsługuje -p), użyj lsof.

     sudo lsof -i tcp:3000
  3. Dla Centos 7 użyj

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

Możesz użyć lsof -i:3000.

To jest "Lista otwartych plików". To daje ci listę procesów i jakich plików i portów używają.

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

To da ci tylko pid, przetestowane na MacOS.

Komentarze (5)