40 votes

ROR + Un serveur est déjà en cours d'exécution. Vérifiez ... / tmp / pids / server.pid. Sortant

Dans mon projet Rails, j'essaie de faire fonctionner deux serveurs différents sur un port différent. Mais cela échoue en donnant cette erreur à la console.

 C:\Rails>rails s
=> Booting Mongrel
=> Rails 3.1.1 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
A server is already running. Check C:/Rails/tmp/pids/server.pid.Exiting
 

Je ne suis pas en train de résoudre le problème. Sil te plait aide moi.

Merci d'avance.

51voto

Rubyist Points 2567

Après googler beaucoup, je viens de supprimer ce fichier et redémarrez le serveur. Puis de nouveau système de créer ce fichier, puis-je supprimer ce fichier. Maintenant le Serveur est en cours d'exécution fine. Et le Système génère une autre copie à la même place. Mais il fonctionne bien.

DELETE THAT FILE ....

Si vous souhaitez exécuter deux serveurs, alors il peut à nouveau créer des ennuis. Donc

Ces deux commandes sont la vérification de la valeur par défaut du fichier PID emplacement (tmp/pid/serveur.pid), de sorte que vous avez vu cette erreur. Essayez d'exécuter plusieurs serveurs comme suit:

Server 1: bundle exec rails s

Server 2: bundle exec rails s -p 3001 -P tmp/pids/server2.pid

Crédit: http://stackoverflow.com/a/14446920/1376448

Merci

Mise à JOUR après Connor Sangsue commentaire à propos de Forman Gem

Contremaître peuvent vous aider à gérer de multiples processus que votre application Rails dépend lors de l'exécution dans le développement. Il fournit également une commande export pour les déplacer dans la production.

38voto

kainlite Points 361

Vous pouvez utiliser netstat pour savoir quel processus contient le serveur Web Rails, vous pouvez alors tuer le pid et le redémarrer, en supposant que, pour une raison quelconque, le serveur ne répond pas ou ne s'exécute pas en arrière-plan et que vous ne trouviez pas d'autre moyen de le faire. redémarrez-le ..

 netstat -plntu | grep 3000
tcp        0      0 0.0.0.0:3000            0.0.0.0:*               LISTEN      7656/ruby
 

La dernière colonne affiche le PID et le nom du processus, il vous suffit alors de faire:

 kill -9 7656
 

et rails s pour que cela fonctionne à nouveau ...

J'espère que c'est utile

16voto

ChrisG Points 8

Je me retrouve souvent à revenir sur cette page Web pour trouver la commande lsof -wni tcp:3000 sorte que cette méthode est plus simple.

Si vous recevez ce message:

 A server is already running. Check /Users/username/project/tmp/pids/server.pid.
Exiting
 

Et si vous utilisez un système unix (mac ou linux), vous pouvez exécuter ces commandes:

 $ cat /Users/username/project/tmp/pids/server.pid

# output

71030

# Kill the process

$ kill -9 71030
 

Puis relancez votre serveur!

14voto

Joe Mellin Points 41

J'ai supprimé le fichier avec cd qui pratiquent dans le répertoire tmp puis de supprimer le fichier

rm server.pid

Puis j'ai redémarré le serveur et j'ai eu cette erreur

Exiting/Users/josephmellin/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/socket.rb:206:in `bind': Address already in use - bind(2) for 0.0.0.0:3000 (Errno::EADDRINUSE)

Ensuite, j'ai pu utiliser la commande suivante pour voir quel processus est en cours d'exécution.

sudo lsof -iTCP -sTCP:LISTEN -P | grep :3000

Et après j'ai entré mon mot de passe, j'ai eu ce resoponse

ruby      2786 josephmellin   12u  IPv4 0xfeadd8ae849eaec9      0t0  TCP *:3000 (LISTEN)

Et ensuite tué le processus avec la commande suivante

KILL -9 2786

Et puis redémarré le serveur (vous aurez un nombre différent de 2786 - je l'ai laissé ici à des fins de démonstration)

3voto

przbadu Points 749

Étape 1: supprimez le .pid

 C:/Rails/tmp/pids/server.pid.Exiting

# IN linux/unix shell
$ rm -rf <path to file>
 

Parfois, cela ne résout pas le problème, alors vous devez arrêter le processus exécuté par localhost. Pour de tels cas, suivez STEP 2

ÉTAPE 2: Lister le processus pour localhost et le tuer

 # For Linux/Unix shell

$ lsof -wni tcp:3000

# output
COMMAND  PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ruby    5946 rails   11u  IPv4  79073      0t0  TCP *:3000 (LISTEN)
ruby    5946 rails   12u  IPv4 103786      0t0  TCP 127.0.0.1:3000->127.0.0.1:53612 (ESTABLISHED)

# Kill the running process
$ kill -9 5946
 

lancez à nouveau votre serveur

 rails server
 

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