Serwer już działa w Railsach


137

Kiedy uruchamiam serwer railsowy za pomocą rails spolecenia, to się wyświetlaA server is already running. Check C:/Sites/folder/Pids/Server.pids

Kiedy otwieram plik, wyświetla tylko 4-cyfrową liczbę, więc jak mogę rozwiązać ten problem?

FYI

  1. Żadna inna instancja cmd Rails nie działa tym razem.
  2. Zaznaczono Menedżera zadań, ale tylko cmd.exepokazuje, że żaden inny proces nie jest uruchomiony. (w systemie Windows).

1
Usuwam

Odpowiedzi:


195

Usuń plik: C: /Sites/folder/Pids/Server.pids

Wyjaśnienie W systemie UNIX przynajmniej zwykle śledzimy identyfikator procesu (pid) w pliku takim jak server.pid. Myślę, że to robi to samo tutaj. Ten plik prawdopodobnie pozostał po awarii.


5
co dokładnie robi ten plik i jakie są tego przyczyny ... czy możesz to trochę bardziej wyjaśnić :)
swapnesh

11
Przepraszam, powinienem był skomentować dalej. W systemie UNIX przynajmniej zwykle śledzimy identyfikator procesu (pid) w pliku takim jak server.pid. Myślę, że to robi to samo tutaj. Ten plik prawdopodobnie pozostał po awarii.
rainkinz,

Myślę, że sklonowałem to z Git, więc myślisz, że to może być przyczyna? github.com/swapnesh/Add_twitter_bootstrap
swapnesh

1
Po wykonaniu tej czynności nadal otrzymuję „Port w użyciu” dla 3000. Czy ktoś wie, jak mogę to naprawić? Dzięki!
daveomcd

5
Uruchom netstat -a -ow wierszu polecenia, aby zobaczyć, który proces używa portu 3000
Rory,

172

TL; DR Po prostu uruchom to polecenie, aby je zabić

sudo kill -9 $(lsof -i :3000 -t)

Główna przyczyna: Ponieważ PID jest zablokowany w pliku, a serwer WWW uważa, że ​​jeśli ten plik istnieje, oznacza to, że już działa. Zwykle po zamknięciu serwera WWW plik jest usuwany, ale w niektórych przypadkach nie następuje prawidłowe usunięcie, więc trzeba usunąć plik ręcznie Nowe rozwiązania

kiedy biegniesz po szynach

=> Uruchamianie WEBrick

=> Początek rozwoju aplikacji Rails 4.0.4 na http://0.0.0.0:3000

=> Uruchom, rails server -haby uzyskać więcej opcji uruchamiania

=> Ctrl-C, aby wyłączyć serwer

Serwer już działa. Sprawdź /your_project_path/tmp/pids/server.pid. Wychodzę

Więc umieść swoją ścieżkę pokazaną tutaj /your_project_path/tmp/pids/server.pid

i usuń ten plik server.pid :

rm /your_project_path/tmp/pids/server.pid

LUB Jeśli twój serwer został odłączony, postępuj zgodnie z poniższymi wskazówkami:

Jeśli odłączyłeś serwer railsowy za pomocą polecenia "rails -d", to

Usuń odłączony serwer rails za pomocą polecenia

ps -aef | grep rails

LUB przez to polecenie

sudo lsof -wni tcp:3000

następnie

kill -9 pID

LUB użyj tego polecenia

Aby znaleźć i zabić proces według nazwy portu, na którym działa ten program. Dla 3000 zamień port, na którym działa twój program.

sudo kill -9 $(lsof -i :3000 -t)

Stare rozwiązanie:

rails s -p 4000 -P tmp/pids/server2.pid

Możesz również znaleźć ten post, aby uzyskać więcej opcji Aktualizacja Rails do wersji 3.2.11 przerywa działanie wielu serwerów


ponieważ PID jest zablokowany w pliku, a serwer WWW uważa, że ​​jeśli ten plik istnieje, oznacza to, że już działa. Zwykle, gdy serwer sieciowy jest zamknięty, plik jest usuwany, ale w niektórych przypadkach prawidłowe usunięcie nie następuje, więc musisz usunąć plik ręcznie
Taimoor Changaiz

Ostrożnie to również zabije Twoją przeglądarkę, jeśli wskazuje na: 3000!
Aeramor,

1
idealne rozwiązanie dlasudo kill -9 $(lsof -i :3000 -t)
new2cpp

84
lsof -wni tcp:3000

Następnie powinieneś zobaczyć proces rubinowy i możesz uruchomić

kill -9 processid

powinieneś być dobry, aby teraz uruchomić ten proces

rails s thin

uruchamianie wielu procesów nie wydaje się dobrym pomysłem iz tego, co przeczytałem, wiele osób się zgadza. Zauważyłem niestety wiele wycieków pamięci z railsami, więc nie mogłem sobie wyobrazić pracy dwóch procesów. Wiem, że w miarę upływu czasu moja strona odświeża się coraz wolniej z powodu danych przechowywanych w pamięci.


27
kill -9 $(lsof -i tcp:3000 -t)

2
@CalamityAdam Rails zwykle działa na porcie 3000. Wyszukuje procesy na tej podstawie i pobiera od nich tylko PID ( -topcja), a następnie zabija proces przez ten pobrany PID.
totymedli

13

Możesz pozbyć się tego procesu, zabijając go:

kill -9 $(lsof -i tcp:3000 -t)

Podoba mi się ten. Ładnie i zwięźle, ale kompletnie. Twoje zdrowie.
LunaCodeGirl

11
$ lsof -wni tcp:3000

# Kill the running process
$ kill -9 5946

$ rm tmp/server.pids

brygadzista start itp. uruchomić usługę


4

Dzieje się tak, gdy zabijasz proces serwera, a plik pid nie został zaktualizowany. Najlepszym rozwiązaniem jest usunięcie pliku Server.pid .

Użyj polecenia

rm <path to file Server.pid>


4

gem install shutup

następnie przejdź do bieżącego folderu projektu railsów i uruchom

shutup # to zabije aktualnie uruchomiony proces Railsów

Możesz użyć polecenia „shutup”, kiedy tylko chcesz

DICLAIMER: Jestem twórcą tego klejnotu

UWAGA: jeśli używasz rvm, zainstaluj gem globalnie

rvm @global do gem install shutup

3

Prawdopodobnie zawiesił serwer przez: ^Z.

Cztery cyfry, które vim C:/Sites/folder/Pids/Server.pidswyprowadzają, to identyfikator procesu.

Powinieneś kill -9 processid , zastępując identyfikator procesu czterema liczbami, które wyświetlił vim (lub inny edytor).


Jaki jest właściwy sposób na prawidłowe zatrzymanie serwera? CTRL + C?
stt106

1

Jeśli korzystasz z systemu Windows, wystarczy wykonać tylko jeden krok, aby „zrestartować szyny”, a następnie ponownie wpisać „rails s” .


1

W systemie Windows Rails 5.2 usuń ten plik

c:/Sites/<your_folder>/tmp/pids/server.pid

i biegnij

rails s

jeszcze raz.


1

Biegać: fuser -k -n tcp 3000

Spowoduje to zabicie procesu działającego na domyślnym porcie 3000.


0

Właśnie miałem ten problem i próbowałem ustawić go na inny port, ale jedyne, co musiałem zrobić, to usunąć mój [app_directory]/tmp/pids/server.pidi wszystko było w porządku.


0

Biegać:

w Ubuntu / linux

 sudo rm /var/www/html/rails/WBPOCTEST/tmp/pids/server.pid

Lub

 pkill -9 ruby

lub

lsof -wni tcp:3000

kill -9 pid
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.