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).
swapnesh
źródło
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.

rainkinz
źródło
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

Taimoor Changaiz
źródło
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.

Josh Bedo
źródło
27
kill -9 $(lsof -i tcp:3000 -t)
Karan Purohit
źródło
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)
manu
źródło
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ę

user1251378
źródło
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>

Ashish Sharma
źródło
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
Lorenzo Sinisi
źródło
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).

Cherenkov
źródło
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” .

Alok Amme
źródło
1

W systemie Windows Rails 5.2 usuń ten plik

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

i biegnij

rails s

jeszcze raz.

MSC
źródło
1

Biegać: fuser -k -n tcp 3000

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

almawhoob
źródło
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.

Dakota Michael
źródło
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
Syed Shibli
źródło