web-dev-qa-db-fra.com

Rails serveur indique que le port est déjà utilisé. Comment arrêter ce processus?

Je suis sur un mac, en train de faire:

Rails Server

Je reçois:

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 en démarrer un sur un nouveau port, mais je veux arrêter ce processus.

253
Blankman

En supposant que vous cherchiez à supprimer tout ce qui se trouve sur le port 3000 (ce que webrick utilise normalement), tapez ceci dans votre terminal pour connaître le PID du processus:

$ lsof -wni tcp:3000

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

$ kill -9 PID
642
idlefingers

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

111
Bijan

Vous devez obtenir l'ID de processus du programme utilisant le port TCP 3000. Pour obtenir l'ID de processus

lsof -i tcp:3000 -t

Et puis, en utilisant cet identifiant de processus, tuez simplement le processus en utilisant la commande ubuntu kill.

kill -9 pid

Ou tout simplement exécuter ci-dessous la commande combinée mentionnée. Il va d'abord chercher le pid puis tuer ce processus.

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

Pour tous ceux qui tombent sur cette question qui ne se trouve pas sur un Mac: en supposant que vous sachiez que votre serveur fonctionne sur le port 3000, vous pouvez le faire d'un coup en exécutant les opérations suivantes:

fuser -k 3000/tcp

Mais comme Toby l’a mentionné, l’implémentation de fuser dans Mac OS est plutôt primitive et cette commande ne fonctionnera pas sur mac.

17
saneshark

Il arrive parfois que le serveur Rails ne soit pas fermé correctement. Vous pouvez trouver le processus utilisé par Rails

ps aux | grep Rails

La sortie sera comme

user     12609  9.8  0.5  66456 45480 pts/0    Sl+  21:06   0:02 /home/user/.rvm/rubies/Ruby-2.2.0-preview1/bin/Ruby bin/Rails s

Ici, id_processus 12609 est utilisé par votre serveur Rails.

Vous pouvez le tuer facilement par commande

tuer -9 12609

13
devudilip

Toutes les réponses ci-dessus sont vraiment bonnes, mais il me fallait un moyen de taper le moins possible dans le terminal. J'ai donc créé un bijou pour cela. Vous ne pouvez installer la gemme qu'une seule fois et exécuter la commande "shutup" à chaque fois que vous souhaitez tuer le processus Rails (tout en étant dans le dossier actuel).

gem install shutup

puis allez dans le dossier actuel de votre projet Rails et lancez

shutup # cela va tuer le processus Rails en cours d'exécution

Vous pouvez utiliser la commande 'shutup' chaque fois que vous voulez

DICLAIMER: Je suis le créateur de ce joyau

REMARQUE: si vous utilisez rvm, installez la gem globalement

rvm @global do gem install shutup
11
Lorenzo Sinisi

ps aux | grep Rails utilisez cette commande pour tuer le serveur

2
Rocker

Par défaut, le serveur Rails utilise le port 3000.
Vous avez donc 2 options pour exécuter Rails serveur.
1. Vous pouvez également exécuter le serveur sur un autre port en définissant un port personnalisé à l'aide de la commande suivante.
Rails s -p 3001
2. Ou vous pouvez tuer tous les processus en cours Ruby en exécutant la commande suivante
killall -9 Ruby
puis lancez Rails server

0
Sarwan Kumar

Une solution en ligne:

kill -9 $(ps aux | grep 'Rails s' | awk {'print$2'}); Rails s
0
Anmol Chawla