web-dev-qa-db-fra.com

Un serveur est déjà en cours d'exécution. Vérifiez…/tmp/pids/server.pid. Sortie - rails

..$ Rails s
=> Booting WEBrick
=> Rails 4.0.4 application starting in development on http://0.0.0.0:3000
=> Run `Rails server -h` for more startup options
=> Ctrl-C to shutdown server
A server is already running. Check /home/..name/rprojects/railsapp/tmp/pids/server.pid.
Exiting

quel est le moyen le plus simple de résoudre ce problème pour un débutant de Rails?

50
ben

Vous pouvez supprimer le fichier server.pid.

rm /your_project_path/tmp/pids/server.pid

Autre:

essayez sous OSX:

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

ou sous linux:

ps -aef | grep Rails

ou 

lsof -wni tcp:3000

tuer le processus en utilisant 

kill -9 PID (eg,2786)
114
ben

Commande simple ligne courte et nette, qui s'en occupera.

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

Si vous utilisez docker-compose et que dans docker-compose.yml, vous avez: volumes: - .:/myapp .__, cela signifie que votre espace de travail local est mappé sur le dossier/myapp du conteneur.

Rien dans/mon application ne sera supprimé pour les volumes définis.

Vous pouvez supprimer ./tmp/pids/server.pid sur votre ordinateur local. Ensuite, le/myapp du conteneur n'aura pas ce fichier.

9
张健健

Simple:

allez dans le dossier racine du projet quand cela se produit et lancez:

gem install shutup
shutup

Cela permettra de trouver le processus en cours d'exécution, de le tuer et de nettoyer le fichier pid

REMARQUE: si vous utilisez rvm, installez la gem globalement 

rvm @global do gem install shutup
8
Lorenzo Sinisi

server.pid contient uniquement l'ID de processus du serveur en cours d'exécution.

Si tu fais:

more `server.pid`

vous obtiendrez un numéro (par exemple 6745) que vous pourrez utiliser pour arrêter le serveur précédent avec la commande kill:

kill -9 6745

et ensuite vous pouvez supprimer le fichier avec la commande rm

rm server.pid
7
muichkine

Cela se produit parfois parce que vous mettez le serveur hors tension de force, par exemple en désactivant manuellement le système d'exploitation/la machine afin que le serveur n'ait pas suffisamment de temps pour se connecter à server.pid. 

Une méthode simple consiste à accéder manuellement à tmp/pids/ (le répertoire affiché dans votre console) et à supprimer le fichier server.pid. Ensuite, lorsque vous redémarrez le serveur, Rails server ou Rails s, il crée un nouveau server.pid et vous pouvez poursuivre le développement. 

5
DragonKnight

Le problème peut être résolu en utilisant:

kill -9 $(more /home/..name/rprojects/railsapp/tmp/pids/server.pid)
3
webster

Ouvrez le fichier path/to/your/Rails/project/tmp/pids/server.pid.

Copiez le numéro que vous y trouvez.

Exécuter kill -9 [PID]

[PID] est le numéro que vous avez copié à partir du fichier server.pid.

Cela mettra fin au processus en cours et vous pourrez redémarrer votre serveur sans problème.

3
Daniel Okwufulueze

le chemin de l'interface utilisateur pour Windows

ouvrez le ResourceMonitor (taskmanager -> Performance -> ResourceMonitor) et supprimez le processus Ruby.exe 

 enter image description here

3

Pour plus d'informations, dans le contexte de l'exécution de l'application dans le menu fixe.

Dans le fichier docker-compose.yml, sous le conteneur d'application même, vous pouvez utiliser l'un des éléments suivants:

commande: ["rm /your-app-path/tmp/pids/server.pid && bundle exec bin/Rails s -p 3000 -b '0.0.0.0'"]

ou

commande: ["rm /your-app-path/tmp/pids/server.pid; foreman start"]

notez l'utilisation de ";" ou "&&", ce "&&" enverra un signal de sortie si rm ne parvient pas à trouver le fichier, forçant votre conteneur à s'arrêter prématurément. en utilisant ";" continuera à exécuter.

pourquoi est-ce causé en premier lieu? le rationnel est que si le serveur (puma/thin/quoique que ce soit) ne se ferme pas correctement, il laissera un pid sur la machine hôte provoquant une erreur de sortie.

pour des raisons de portabilité plutôt que de supprimer manuellement le fichier sur le système hôte, il est préférable de vérifier si le fichier existe dans un fichier scripté ou composé lui-même.

0
Jimmy M.G. Lim

Pour ce problème,

Ce que j'ai fait c'est:

  • Supprimer le dossier Pids qui se trouve sous app/tmp/
  • puis fermez le terminal sur lequel vous utilisez l'application en cours et fermez l'onglet (dans la fenêtre du navigateur)

  • après cela, ouvrez à nouveau le terminal en allant dans le dossier, puis faites Rails s

  • Ensuite, il ouvre le nouvel onglet qui exécute notre application
0
sowmya

Tuez server.pid en utilisant la commande:

kill -9 `cat /root/myapp/tmp/pids/server.pid`

Remarque: Utilisez votre chemin server.pid qui s’affiche dans console/terminal.

Je vous remercie. 

0
Rahul2692

Exécuter la commande ci-dessous sur le terminal (pour Linux uniquement)

ps aux | grep Rails

et alors

kill -9 [pid]

Autrement

lsof -wni tcp:3000

et alors

kill -9 [PID]
0
Arvind singh

copiez d’abord le fichier dans le fichier, puis supprimez-le: rm /your_project_path/tmp/pids/server.pid, puis créez-le à nouveau. touchez /YOUR_PROJECT_PATH/tmp/pids/server.pid Cela a fonctionné pour moi.

0
Mounaim