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.
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
où 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.