[Macos] Trouver (et tuer) le processus de verrouillage du port 3000 sur Mac


Answers

Trouver:

[sudo] lsof -i :3000

Tuer:

kill -9 <PID>
Question

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




Les moyens possibles pour y parvenir:

Haut

La commande top est la manière traditionnelle d'afficher l'utilisation des ressources de votre système et de voir les processus qui prennent le plus de ressources système. Top affiche une liste de processus, avec ceux qui utilisent le plus de CPU en haut.

ps

La commande ps répertorie les processus en cours d'exécution. La commande suivante répertorie tous les processus en cours d'exécution sur votre système:

ps -A

Vous pouvez également rediriger la sortie via grep pour rechercher un processus spécifique sans utiliser d'autres commandes. La commande suivante rechercherait le processus de Firefox:

ps -A | grep firefox

La façon la plus courante de transmettre des signaux à un programme est avec la commande kill.

kill PID_of_target_process

lsof

Liste de tous les fichiers ouverts et les processus qui les ont ouverts.

lsof -i -P | grep -i "listen"
kill -9 PID

ou

 lsof -i tcp:3000 






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.




Vous devriez essayer ce code en utilisant le terminal:

$ killall -9 ruby



Une des façons de tuer un processus sur un port est d'utiliser la librairie python: freeport ( https://pypi.python.org/pypi/freeport/0.1.9 ). Une fois installé, simplement:

# install freeport
pip install freeport

# Once freeport is installed, use it as follows
$ freeport 3000
Port 3000 is free. Process 16130 killed successfully



Trouver la connexion ouverte

lsof -i -P | grep -i "écoute"

Tuer par ID de processus

tuez -9 'PID'




Dans votre .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 s'il est bloqué.