..$ 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?
Vous pouvez supprimer le fichier server.pid
.
rm /your_project_path/tmp/pids/server.pid
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)
Commande simple ligne courte et nette, qui s'en occupera.
kill -9 $(lsof -i tcp:3000 -t)
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.
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
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
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.
Le problème peut être résolu en utilisant:
kill -9 $(more /home/..name/rprojects/railsapp/tmp/pids/server.pid)
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]
Où [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.
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.
Pour ce problème,
Ce que j'ai fait c'est:
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
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.
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]
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.