Question Trouver (et tuer) le processus de verrouillage du port 3000 sur Mac


Comment trouver les processus qui écoutent / utilisent mes ports tcp? Je suis sur Mac OS X.

Parfois, après un crash ou un bug, mon application rails verrouille le port 3000. Je ne peux pas le trouver en utilisant ps -ef ... Comment puis-je trouver la chose stupide et la tuer, brutalement ...?

En faisant

rails server

Je reçois

Adresse déjà utilisée - bind (2) (Errno :: EADDRINUSE)

Mise à jour 2014:

Pour compléter certaines des réponses ci-dessous: Après l'exécution des commandes kill, la suppression du fichier pid peut être nécessaire rm ~/mypath/myrailsapp/tmp/pids/server.pid


1054
2017-10-04 12:19


origine


Réponses:


  1. Tu peux essayer netstat

    netstat -vanp tcp | grep 3000
    
  2. Pour macOS El Capitan et plus récent (ou si votre netstat ne supporte pas -p), utilisation lsof

    sudo lsof -i tcp:3000 
    
  3. Pour Centos 7 utilisation

    netstat -vanp --tcp | grep 3000
    

1754
2017-10-04 12:48



Trouver:

[sudo] lsof -i :3000

Tuer:

kill -9 <PID>

1163
2017-09-09 20:58



Rien au-dessus travaillé pour moi. Quelqu'un d'autre avec mon expérience pourrait essayer ce qui suit (a travaillé pour moi):

Courir:

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

puis vérifiez l'état du PID signalé:

ps ax | grep <PID>

enfin, "allez-y avec":

kill -QUIT <PID>

93
2018-03-07 20:24



Vous pouvez utiliser lsof -i:3000.

C'est "List Open Files". Cela vous donne une liste des processus et des fichiers et ports qu'ils utilisent.


83
2017-10-04 12:36



Un one-liner pour extraire le PID du processus en utilisant le port 3000 et le tuer.

lsof -ti:3000 | xargs kill

L'indicateur -t supprime tout sauf le PID de la sortie lsof, ce qui facilite la suppression.


76
2017-08-05 21:03



Dans ton .bash_profile, créez un raccourci pour terminate le processus 3000:

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

Ensuite, appelez $terminate si c'est bloqué.


49
2018-05-16 09:17



Pour tuer de force un processus de ce type, utilisez la commande suivante

lsof -n -i4TCP:3000 

Où 3000 est le numéro de port sur lequel le processus s'exécute

cela retourne l'identifiant du processus (PID) et courir

kill -9 "PID"

Remplacez le PID par le numéro que vous obtenez après l'exécution de la première commande

For Instance, if I want kill the process running on port 8080


39
2017-12-28 04:21



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

Cela vous donnera juste le pid, testé sur MacOS.


35
2017-08-03 21:14