Je suis nouveau chez Rails et j'utilise une machine Ubuntu et l'IDE Rubymine. Le problème est que je ne parviens pas à arrêter le serveur Rails. J'ai essayé d'arrêter le serveur en tuant le processus Rails. Mais, lorsque je lance pgrep -l Rails
, aucun processus de ce type n’est trouvé. Je ne peux donc tuer que les processus Ruby, mais le serveur ne s’arrête pas.
J'ai essayé ./script/server stop
(depuis que j'ai commencé en exécutant ./script/server start
), mais cela n'a pas fonctionné. En cherchant sur Google et en recherchant des publications stackoverflow, j'ai essayé de changer le port d'écoute du port localhost, mais sans succès. Quelqu'un pourrait aider?
Vous pouvez utiliser d'autres ports comme suit:
Rails server -p 3001
Normalement, dans votre terminal, vous pouvez essayer Ctrl + C
pour arrêter le serveur.
L’autre moyen de tuer le serveur par défaut de Ruby on Rails (WEBrick
) est le suivant:
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 tuer le processus:
Par exemple:
$ kill -9 PID
Et certaines des autres réponses que j'ai trouvées est:
Pour arrêter le serveur Rails en cours d’exécution, appuyez sur:
CTRL-C
CTRL-Z
Vous aurez le contrôle à bash
. Puis tapez (sans le $
):
$ fg
Et cela reviendra dans le processus, puis quittera correctement le Rails s
.
C'est un peu ennuyeux, mais cela vaut certainement mieux que de tuer le processus manuellement. Ce n'est pas si mal et c'est le meilleur que j'ai pu comprendre.
Vous pouvez utiliser killall -9 Rails
pour tuer toutes les applications en cours d'exécution avec "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 tout le processus de Rails
Réponse mise à jour
ps aux|grep 'Rails'|grep -v 'grep'|awk '{ print $2 }'|xargs kill -9
Cela tuerait tout processus 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
le fait.
Voici les étapes pour tuer le processus serveur:
1. lsof -i tcp:3000
2. kill -9 1234
où 1234
est le PID du processus: localhost: 3000 affiché à l'étape 1.
OR
Supprimez le fichier (server.pid) sous Rails.root/tmp/pids/
et redémarrez le serveur.
OR
ouvrez l'application dans un autre port en utilisant la commande:
Rails s -p 3001
J'utilise généralement:
killall Ruby
OR
pkill -9 Ruby
qui va tuer tous les processus liés Ruby qui sont en cours d'exécution comme Rails server
, Rails console
, etc.
1. Supprimez simplement le fichier pid du répertoire de l'application 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
Supprimez le fichier 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 exécutez Rails s
Utilisez ctrl+c
pour arrêter votre serveur Webrick.
Malheureusement, si cela ne fonctionne pas, fermez avec force le terminal 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
J'ai utilisé killall -9 Rails
comme suggéré par Sri et cela n'a pas fonctionné. J'ai ajusté la commande à killall -9 Ruby
et le serveur s'est fermé immédiatement.
Tl; dr: killall -9 Ruby
Ctrl-Z devrait normalement faire l'affaire.
Étape 1: trouver quels sont les éléments qui consomment 3000 ports.
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 commencer par utiliser un nouveau port, par exemple.
Rails s -p 3001
ou il démarre et s'arrête dans ce cas vous souhaitez supprimer le dossier temporaire de la structure de répertoires Rails il démarre le serveur Rails.
J'ai remarqué sur Windows (Im en utilisant 10, mais pas sûr si le même 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 vous regardez les pids tmp, c'est toujours là.
Peut-être un bug avec git bash?
c'est aussi simple que
pkill -9 Ruby
ni plus ni moins
Suivez ces étapes:
Pour ma machine Windows 10, Ctrl - C + Ctrl - D travaux.
Nous pouvons tuer la session Rails sur Linux en utilisant PORT no
fuser -k 3000/tcp
ici 3000 est un port no . Maintenant, redémarrez votre serveur, vous verrez que votre serveur est en cours d'exécution.
Un moyen super facile serait
gem install shutup
puis allez dans le dossier actuel de votre projet Rails et lancez
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 ce joyau
REMARQUE: si vous utilisez rvm, installez la gem globalement
rvm @global do gem install shutup
vérifiez le fichier /tmp/tmp/server.pid
il y a un pid à l'intérieur.
Habituellement, je fais "kill -9 THE_PID" dans le cmd
Il est tard pour cette question ... Voici mes 2 centimes. J'ai créé une tâche rake pour arrêter le serveur quand je n'y ai pas accès ..__ J'ai seulement testé sur Mac.
Avec cela, vous pouvez simplement l'ajouter à votre projet puis lancer la commande rake.
Voici:
Lien Gist: la dernière version sera ici . https://Gist.github.com/houmanka/289184ca5d8d92d0499#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.strip
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 exécutez la commande Cntrl + C dans le même terminal (onglet) utilisé pour démarrer le serveur.
Dans mon cas, j'avais 2 onglets mais j'ai oublié d'arrêter le serveur de l'onglet correct et je me demandais pourquoi Ctrl + C ne fonctionne pas.
killall -9 Ruby
va tuer tous les processus Ruby, et au moins sur ma machine, les serveurs Rails apparaissent en tant que processus Ruby. killall -9 Rails
est beaucoup plus spécifique et ne fonctionne pas pour les anciennes versions de serveurs Rails (il donne un message 'Rails: aucun processus trouvé' car le processus s'appelle Ruby)
Rencontré ce problème il y a un moment. Après avoir soumis un formulaire dans activeadmin, le serveur Rails s’est juste accroché et j’ai été incapable de le tuer avec des moyens normaux (même après ctrl + z, il était toujours en cours d’arrière-plan). La réponse de l'apprenant a aidé, mais cette commande n'a pas besoin d'identifiant de processus.