Impossible d’arrêter le serveur de rails

Je suis nouveau sur les rails et j’utilise une machine Ubuntu et l’IDE Rubymine. Le problème est que je ne parviens pas à arrêter le serveur de rails. J’ai essayé d’arrêter le serveur en tuant les rails. Mais, lorsque je pgrep -l rails , aucun processus de ce type n’est trouvé. Donc, je ne peux que tuer les processus Ruby, mais le serveur ne s’arrête pas.

J’ai essayé ./script/server stop (depuis que j’ai démarré en exécutant ./script/server start ), mais cela n’a pas fonctionné. Googler autour et trouver des posts stackoverflow, j’ai essayé de changer le port d’écoute du port localhost mais sans succès. Quelqu’un pourrait-il aider?

Vous pouvez utiliser d’autres ports comme les suivants:

 rails server -p 3001 

Normalement, dans votre terminal, vous pouvez essayer Ctrl + C pour arrêter le serveur.

L’autre façon de tuer le serveur par défaut Ruby on Rails (qui est WEBrick ) est:

 kill -INT $(cat tmp/pids/server.pid) 

Dans votre terminal pour connaître le PID du processus:

 $ lsof -wni tcp:3000 

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

Par exemple:

 $ kill -9 PID 

Et certaines des autres réponses que j’ai trouvées sont:

Pour arrêter le serveur de rails en cours d’exécution, appuyez sur:

 CTRL-C CTRL-Z 

Vous ramènerez le contrôle à bash . Puis tapez (sans le $ ):

 $ fg 

Et cela retournera dans le processus, puis quittera correctement Rails s .

C’est un peu ennuyeux, mais cela bat certainement le processus manuellement. Ce n’est pas trop mal et c’est le mieux que je puisse trouver.

Réponse mise à jour:

Vous pouvez utiliser killall -9 rails pour tuer toutes les applications en cours d’exécution avec des ” rails ” dans le nom.

killall -9 rails

vous pouvez utiliser la commande grep de la manière suivante,

 ps aux | grep rails 

et alors

 kill -9 {process_id} 

pkill -9 rails pour tuer tous les processus de rails

Réponse mise à jour

ps aux|grep 'rails'|grep -v 'grep'|awk '{ print $2 }'|xargs kill -9

Cela va tuer tous les processus de rails en cours d’exécution. Remplacez «rails» par quelque chose d’autre pour tuer tout autre processus.

Sur mon MAC, le killall -9 rails ne fonctionne pas. Mais killall -9 ruby fait.

Voici les étapes à suivre pour éliminer le processus du serveur:

1. lsof -i tcp:3000

2. kill -9 1234

1234 est le PID du processus: localhost: 3000 s’affiche à l’étape 1.

OU

Supprimez le fichier (server.pid) sous Rails.root/tmp/pids/ et redémarrez le serveur.

OU

ouvrir l’application dans un autre port en utilisant la commande:

rails s -p 3001

J’utilise généralement:

killall ruby

OU

pkill -9 ruby

qui va tuer tous les processus liés à Ruby qui fonctionnent comme le rails server rails console , etc.

Utilisez ctrl+c pour arrêter votre serveur Webrick.

Malheureusement, si cela ne fonctionne pas, fermez le terminal avec force et redémarrez-le.

Une autre astuce est que

 1. open your system-monitor(a gui application) on ubuntu 2. Select processes tab 3. Then look for a process having name 'ruby' 4. End that process 

Supprimez le dossier server.pid du dossier tmp / pids. Dans mon cas, l’erreur était la suivante: un serveur est déjà en cours d’exécution. Vérifiez /home/sbhatta/myapp/tmp/pids/server.pid.

Donc, je supprime server.pid

rm /home/sbhatta/myapp/tmp/pids/server.pid puis lancez rails s

Ctrl-Z devrait normalement faire l’affaire.

J’ai utilisé des killall -9 rails comme Sri l’a suggéré et cela n’a pas fonctionné. J’ai ajusté la commande à killall -9 ruby et le serveur a fermé immédiatement.

Tl; dr: killall -9 ruby

1. Simplement supprimer le fichier pid du répertoire des applications rails

Rails_app -> tmp -> pids -> pid file

Supprimer le fichier et exécuter

rails start


2. Pour Rails 5.0 et supérieur, vous pouvez utiliser cette commande

rails restart

Étape 1: trouver quels sont les éléments consommant 3000 port.

 lsof -i:3000 

étape 2: trouver le processus nommé

Pour Mac

 ruby TCP localhost:hbci (LISTEN) 

Pour Ubuntu

 ruby TCP *:3000 (LISTEN) 

Étape 3: Trouvez le PID du processus et tuez-le.

 kill -9 PID 

Lorsque le serveur rails ne démarre pas, cela signifie qu’il est déjà en cours d’exécution, vous pouvez donc commencer par utiliser le nouveau port, par exemple.

 rails s -p 3001 

ou il démarre et s’arrête dans ce cas, vous voulez supprimer le dossier temp dans la structure du répertoire rails, il démarre le serveur de rails.

J’ai remarqué sur Windows (je utilise 10, mais je ne sais pas si la même chose pour oler). Si vous utilisez cmd.exe et ctrl + c, le serveur raisl s’arrête correctement.

Cependant, si vous utilisez Git Bash, ce n’est pas le cas. Il dit que oui, mais quand on regarde les pmp tmp, c’est toujours là.

Peut-être un bug avec git bash?

vérifiez le /tmp/tmp/server.pid

il y a un pid à l’intérieur

Habituellement, je ne fais “tuer -9 THE_PID” dans le cmd

Il est tard pour cette question. Voici mes 2 centimes. J’ai fait une tâche pour arrêter le serveur lorsque je n’y ai pas access. J’ai seulement testé sur Mac si.

Avec cela, vous pouvez simplement l’append à votre projet, puis exécuter la commande rake.

Voici:

Lien Gist: la version -latest sera ici. https://gist.github.com/houmanka/289184ca5d8d92de0499#file-server-rake

Quelques codes ici:

 # Make a file under: `project_root/lib/tasks/server.rake` # Then paste the following code namespace :server do desc "Stop the running server by killing the PID" task :kill do STDOUT.puts "Enter port number: " post_number = STDIN.gets.ssortingp system "pid=$(lsof -i:#{post_number.to_i} -t); kill -TERM $pid || kill -KILL $pid" end end # Then to use it in the terminal: `rake server:kill` 

Assurez-vous également que vous utilisez la commande Ctrl + C dans le même terminal (onglet) utilisé pour démarrer le serveur.

Dans mon cas, j’avais 2 tabs mais j’ai oublié d’arrêter le serveur à partir de l’onglet correct et je me demandais pourquoi Cntrl + C ne fonctionne pas.

Un moyen facile serait

gem install shutup

puis allez dans le dossier actuel de votre projet de rails et exécutez

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 cette gemme

NOTE: si vous utilisez rvm, installez la gem globalement

 rvm @global do gem install shutup 

Pour ma machine Windows 10, Ctrl-C + Ctrl-D fonctionne.

killall -9 ruby va tuer tous les processus ruby, et au moins sur ma machine, les serveurs de rails apparaissent comme des processus ruby. killall -9 rails est beaucoup plus spécifique et ne fonctionne pas avec les anciennes versions des serveurs rails (cela donne un “rails: pas de processus trouvé” car le processus s’appelle ruby)

J’ai rencontré ce problème il y a quelque temps. Après avoir envoyé un formulaire dans activeadmin, le serveur de rails a simplement raccroché et je n’ai pas pu le tuer en utilisant des moyens normaux (même après que Ctrl + Z fonctionnait toujours en arrière-plan). La réponse de l’apprenant a aidé, mais cette commande n’a pas besoin d’identifiant de processus.