Ich bin neu in Schienen und benutze eine Ubuntu-Maschine und die Rubymin-IDE. Das Problem ist, dass ich den Rails-Server nicht stoppen kann. Ich habe versucht, den Server zu stoppen, indem ich den Rails-Prozess abgebrochen habe. Aber wenn ich laufe pgrep -l rails
, wird kein solcher Prozess gefunden. Ich kann also nur Ruby-Prozesse beenden, aber der Server wird nicht gestoppt.
Ich habe es versucht ./script/server stop
(seit ich mit dem Laufen angefangen habe ./script/server start
), aber das hat nicht funktioniert. Ich googelte herum und fand einige Stackoverflow-Beiträge. Ich versuchte, den Überwachungsport des Localhost-Ports zu ändern, aber ohne Erfolg. Könnte jemand helfen?
ruby-on-rails
Epsilone
quelle
quelle
Antworten:
Sie können andere Ports wie die folgenden verwenden:
Normalerweise können Sie in Ihrem Terminal versuchen
Ctrl + C
, den Server herunterzufahren.Die andere Möglichkeit, den Ruby on Rails-Standardserver (dh) zu beenden,
WEBrick
ist:In Ihrem Terminal, um die PID des Prozesses herauszufinden:
Verwenden Sie dann die Nummer in der PID-Spalte, um den Prozess abzubrechen:
Beispielsweise:
Und einige der anderen Antworten, die ich gefunden habe, sind:
Um den Rails-Server während des Betriebs zu stoppen, drücken Sie:
Sie erhalten die Kontrolle zurück zu
bash
. Geben Sie dann (ohne$
) ein:Und dies wird wieder in den Prozess einfließen und dann
Rails s
ordnungsgemäß beendet.Es ist ein wenig nervig, aber das ist sicher besser als den Prozess manuell zu beenden. Es ist nicht schlecht und es ist das Beste, was ich herausfinden konnte.
Aktualisierte Antwort:
Sie können
killall -9 rails
alle laufenden Apps mit "rails
" im Namen beenden.killall -9 rails
quelle
{APP_ROOT}/tmp/pids/server.pid
Datei, sodass Sie nicht danach suchen müssen - solange der Server ausgeführt wird. Wennctrl-c
Sie also nicht nur diesen Befehl kill in einem anderen Terminal ausführen, wird der Webrick-Server sofort beendet.Sie können den Befehl grep folgendermaßen verwenden:
und dann
quelle
killall -9 rails
ps aux | grep puma
pkill -9 rails
den ganzen Prozess der Schienen zu tötenAntwort aktualisiert
ps aux|grep 'rails'|grep -v 'grep'|awk '{ print $2 }'|xargs kill -9
Dadurch wird jeder Laufschienenprozess beendet. Ersetzen Sie "Schienen" durch etwas anderes, um andere Prozesse zu beenden.
quelle
Im Folgenden finden Sie Schritte zum Beenden des Serverprozesses:
1. lsof -i tcp:3000
2. kill -9 1234
Wo
1234
ist die PID des Prozesses: localhost: 3000 Anzeige in Schritt 1.ODER
Entfernen Sie die Datei (server.pid) unter
Rails.root/tmp/pids/
und starten Sie den Server neu.ODER
Öffnen Sie die App an einem anderen Port mit dem folgenden Befehl:
rails s -p 3001
quelle
Auf meinem MAC
killall -9 rails
funktioniert das nicht. Aberkillall -9 ruby
tut es.quelle
COMMAND
Wert.Ich benutze im Allgemeinen:
killall ruby
ODER
pkill -9 ruby
welche alle Rubin bezogenen Prozesse töten , die wie laufen
rails server
,rails console
usw.quelle
1. Löschen Sie einfach die PID-Datei aus dem Rails-App-Verzeichnis
Rails_app -> tmp -> pids -> pid file
Löschen Sie die Datei und führen Sie sie aus
rails start
2. Für Rails 5.0 und höher können Sie diesen Befehl verwenden
rails restart
quelle
Verwenden
ctrl+c
Sie diese Option, um Ihren Webrick-Server herunterzufahren.Wenn dies leider nicht funktioniert, schließen Sie das Terminal mit Gewalt und starten Sie es neu.
Ein weiterer Trick ist das
quelle
Löschen Sie die Datei server.pid aus dem Ordner tmp / pids. In meinem Fall war der Fehler: Ein Server läuft bereits. Überprüfen Sie /home/sbhatta/myapp/tmp/pids/server.pid.
Also lösche ich server.pid
rm /home/sbhatta/myapp/tmp/pids/server.pid
dann rennerails s
quelle
Schritt 1: Finden Sie heraus, welche Elemente 3000 Port verbrauchen.
Schritt 2: Suchen Sie den genannten Prozess
Für Mac
Für Ubuntu
Schritt 3: Finden Sie die PID des Prozesses und beenden Sie ihn.
quelle
Strg-Z sollte normalerweise den Trick machen.
quelle
Ich habe
killall -9 rails
wie von Sri vorgeschlagen verwendet und es hat nicht funktioniert. Ich habe den Befehl angepasstkillall -9 ruby
und der Server sofort geschlossen.Tl; dr:
killall -9 ruby
quelle
es ist so einfach wie
nicht mehr, nicht weniger
quelle
Wenn der Rails-Server nicht gestartet wird, bedeutet dies, dass er bereits ausgeführt wird. Sie können dann mit einem neuen Port beginnen, z.
oder es startet und stoppt in diesem Fall, wenn Sie den temporären Ordner in der Rails-Verzeichnisstruktur löschen möchten, startet es den Rails-Server.
quelle
Überprüfen Sie die Datei /tmp/tmp/server.pid
Da ist eine Pid drinnen.
Normalerweise mache ich "kill -9 THE_PID" im cmd
quelle
Ich habe unter Windows bemerkt (ich benutze 10, bin mir aber nicht sicher, ob das auch für ältere gilt). Wenn Sie cmd.exe und Strg + c verwenden, stoppt der Raisl-Server korrekt.
Wenn Sie jedoch Git Bash verwenden, ist dies nicht der Fall. Es heißt, es hat, aber wenn man sich die tmp-Pids ansieht, ist es immer noch da.
Vielleicht ein Bug mit Git Bash?
quelle
killall -9 ruby
beendet alle Ruby-Prozesse, und zumindest auf meinem Computer werden Rails-Server als Ruby-Prozesse angezeigt.killall -9 rails
ist viel spezifischer und funktioniert nicht für ältere Versionen von Rails-Servern (es gibt ein "Rails: kein Prozess gefunden", da der Prozess Ruby heißt)Dieses Problem ist vor einiger Zeit aufgetreten. Nachdem ich ein Formular in activeadmin gesendet hatte, hing der Rails-Server einfach und ich konnte es nicht mit normalen Mitteln beenden (selbst nach Strg + Z lief es noch im Hintergrund). Die Antwort des Lernenden hat geholfen, aber dieser Befehl benötigt keine Prozess-ID.
quelle
Für diese Frage ist es spät. Hier sind meine 2 Cent. Ich habe eine Rechenaufgabe zum Stoppen des Servers erstellt, wenn ich keinen Zugriff darauf habe. Ich habe allerdings nur auf dem Mac getestet.
Mit diesem können Sie es einfach zu Ihrem Projekt hinzufügen und dann den Befehl rake ausführen.
Bitte schön:
Hauptlink: - Die neueste Version wird hier sein. https://gist.github.com/houmanka/289184ca5d8d92de0499#file-server-rake
Ein Code hier:
quelle
Stellen Sie außerdem sicher, dass Sie den Befehl Cntrl + C im selben Terminal (Registerkarte) ausführen, mit dem der Server gestartet wird.
In meinem Fall hatte ich 2 Registerkarten, aber ich habe vergessen, den Server von der richtigen Registerkarte abzuhalten, und ich habe mich gefragt, warum Cntrl + C nicht funktioniert.
quelle
Ein super einfacher Weg wäre
gem install shutup
Gehen Sie dann in den aktuellen Ordner Ihres Rails-Projekts und führen Sie es aus
shutup
# Dadurch wird der derzeit ausgeführte Rails-Prozess beendetSie können den Befehl 'shutup' jederzeit verwenden
DICLAIMER: Ich bin der Schöpfer dieses Edelsteins
HINWEIS: Wenn Sie rvm verwenden, installieren Sie den Edelstein global
quelle
Für meine Windows 10-Maschine funktioniert Ctrl - C+ Ctrl - D.
quelle
Wir können die Rails-Sitzung unter Linux mit PORT-Nr
hier ist 3000 ein port nr. Starten Sie nun Ihren Server neu. Sie werden sehen, dass Ihr Server ausgeführt wird.
quelle
Folge diesen Schritten:
quelle
Address already in use - bind(2) for "127.0.0.1" port 3000 (Errno::EADDRINUSE)
Öffnen Sie einfach die Datei an dem angegebenen Speicherort
sudo vi /Users/user1/go/src/github.com/rails_app/rails_project/tmp/pids/server.pid
Suchen Sie die Prozess-ID / Thread-ID, unter der der Prozess ausgeführt wird.
Beenden Sie den angegebenen Prozess / Thread mit
kill -9 84699
quelle
Auf Schienen 6 mit
ps aux | grep rails
gab den Serverprozess nicht zurückich musste es tun
ps aux | grep puma
um den eigentlichen Prozess zu finden und ihn dann mit zu beenden
kill -9 {process_id}
quelle
Wenn Sie eine modernere Version von Rails verwenden und Puma als Webserver verwendet, können Sie den folgenden Befehl ausführen, um den feststeckenden Puma-Prozess zu finden:
Dies führt zu einer ähnlichen Ausgabe:
Sie möchten den Prozess, auf den sich nicht bezieht
grep
. In diesem Fall lautet die Prozess-ID 85923.Ich kann dann den folgenden Befehl ausführen, um diesen Prozess abzubrechen:
quelle