303 votes

Serveur Rails dit que le port est déjà utilisé, la façon de tuer ce processus?

Je suis sur un mac, en faisant:

serveur rails

J'obtiens:

2010-12-17 12:35:15] INFO  WEBrick 1.3.1
[2010-12-17 12:35:15] INFO  ruby 1.8.7 (2010-08-16) [i686-darwin10.4.0]
[2010-12-17 12:35:15] WARN  TCPServer Error: Address already in use - bind(2)
Exiting

Je sais que je peux démarrer sur un nouveau port, mais j'ai envie de tuer ce processus.

748voto

idlefingers Points 15957

En supposant que vous êtes à la recherche pour tuer tout ce qui est sur le port 3000 (qui est ce que webrick utilise normalement), entrez ceci dans votre terminal afin de trouver le PID du processus:

$ lsof -wni tcp:3000

Ensuite, utilisez le numéro dans la colonne PID pour tuer le processus:

$ kill -9 PID

154voto

Bijan Points 1193

kill -9 $(lsof -i tcp:3000 -t)

18voto

saneshark Points 581

Pour quiconque de tomber sur cette question qui n'est pas sur un Mac: en supposant que vous savez que votre serveur est en cours d'exécution sur le port 3000, vous pouvez le faire en un seul coup en exécutant la commande suivante:

fuser -k 3000/tcp

Mais comme Toby a mentionné, la mise en œuvre de l'unité de fusion dans Mac OS est assez primitif et cette commande ne fonctionne pas sur mac.

-4voto

InsanelyADHD Points 142

Type:

man lsof

Recherchez -w, -n et -je

-j': internet des choses -n: le rend plus rapide -w: active ou désactive les avertissements

Il y a plus de détails sur les pages de man

-6voto

Si vous êtes sur une machine windows, procédez comme suit.

c:/project/
cd tmp
c:/project/tmp
cd pids
c:/project/tmp/pids
dir

Vous y trouverez un fichier appelé serveur.pid

delelte.

c:/project/tmp/pid> del *.pid

Thats it.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X