..$ rails s
=> Booting WEBrick
=> Rails 4.0.4 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
A server is already running. Check /home/..name/rprojects/railsapp/tmp/pids/server.pid.
Exiting
jaki jest najłatwiejszy sposób rozwiązania tego problemu dla początkującego w railsach?
ruby-on-rails
ben
źródło
źródło
temp
folderu może rozwiązać problem.Odpowiedzi:
Możesz usunąć
server.pid
plik.rm /your_project_path/tmp/pids/server.pid
Jeszcze:
spróbuj w OSX:
sudo lsof -iTCP -sTCP:LISTEN -P | grep :3000
lub w systemie Linux:
ps -aef | szyny grep
lub
lsof -wni tcp:3000
zabić proces za pomocą
kill -9 PID (eg,2786)
źródło
Krótkie i wyraźne polecenie jednoliniowe, które się tym zajmie.
kill -9 $(lsof -i tcp:3000 -t)
źródło
ruby
, uruchamiająctop
pobierając PID, a następnie uruchamiająckill -9 <PID>
server.pid
zawiera tylko identyfikator procesu działającego serwera.Jeśli zrobisz:
more /your_project_path/tmp/pids/server.pid
otrzymasz numer (powiedzmy 6745), którego możesz użyć do zatrzymania poprzedniego serwera za pomocą polecenia kill:
kill -9 6745
a następnie możesz usunąć plik za pomocą
rm
poleceniarm /your_project_path/tmp/pids/server.pid
źródło
server.pid
znakami mogłoby spowodować, że powłoka spróbuje wykonać server.pid, prawda?Jeśli używasz docker-compose, a w docker-compose.yml masz:
volumes: - .:/myapp
Oznacza to, że lokalny obszar roboczy jest mapowany na folder container / myapp.Cokolwiek w / myapp nie zostanie usunięte dla zdefiniowanych woluminów.
Możesz usunąć
./tmp/pids/server.pid
na swoim komputerze lokalnym. Wtedy kontener / myapp nie będzie miał tego pliku.źródło
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
. OdniesieniaProsty:
przejdź do folderu głównego projektu, kiedy to się stanie i uruchom:
gem install shutup shutup
Spowoduje to znalezienie aktualnie uruchomionego procesu, zabicie go i wyczyszczenie pliku pid
UWAGA: jeśli używasz rvm, zainstaluj gem globalnie
rvm @global do gem install shutup
źródło
Problem można rozwiązać za pomocą:
kill -9 $(more /home/..name/rprojects/railsapp/tmp/pids/server.pid)
źródło
Dzieje się tak czasami, ponieważ wyłączasz serwer na siłę, na przykład ręcznie wyłączając system operacyjny / maszynę, aby serwer nie miał wystarczająco dużo czasu na zalogowanie się do server.pid.
Jednym prostym sposobem jest ręczne przejście do
tmp/pids/
(katalogu wyświetlonego w konsoli) i usunięcieserver.pid
pliku. Następnie, po ponownym uruchomieniu serwerarails server
lubrails s
utworzeniu nowego server.pid i możesz kontynuować rozwój.źródło
sposób GUI dla systemu Windows użytkownika
otwórz ResourceMonitor (taskmanager -> Performance -> ResourceMonitor) i zabij proces ruby.exe
źródło
Otwórz
path/to/your/rails/project/tmp/pids/server.pid
plik.Skopiuj numer, który tam znajdziesz.
Biegać
kill -9 [PID]
Gdzie
[PID]
jest numer skopiowany zserver.pid
pliku.To zabije działający proces serwera i będziesz mógł ponownie uruchomić serwer bez żadnych problemów.
źródło
Zabij server.pid za pomocą polecenia:
kill -9 `cat /root/myapp/tmp/pids/server.pid`
Uwaga: użyj ścieżki server.pid, która jest wyświetlana w konsoli / terminalu.
Dziękuję Ci.
źródło
Dodatkowe informacje w kontekście uruchamiania aplikacji w dockerze.
W pliku docker-compose.yml, pod samym kontenerem aplikacji, możesz użyć jednego z poniższych:
command: ["rm /your-app-path/tmp/pids/server.pid && bundle exec bin/rails s -p 3000 -b '0.0.0.0'"]
lub
command: ["rm /your-app-path/tmp/pids/server.pid; foreman start"]
Zwróć uwagę na użycie jednego
;
lub&&
, które&&
wyśle sygnał wyjścia, jeślirm
nie znajdzie pliku, zmuszając kontener do przedwczesnego zatrzymania. Używanie;
będzie kontynuowane.Dlaczego jest to spowodowane w pierwszej kolejności? Powodem jest to, że jeśli serwer (puma / thin / cokolwiek) nie zakończy pracy, pozostawi pid w maszynie hosta, powodując błąd wyjścia.
Aby zapewnić przenośność, zamiast ręcznie usuwać plik w systemie hosta, lepiej sprawdzić, czy plik istnieje w skrypcie lub w samym pliku redagowania.
źródło
First Find PID # - gdzie serwer Railsów utknął
Uruchom to, aby znaleźć zablokowany PID
cat ./tmp/pids/server.pid
Zwróci coś takiego
65829
Następnie ZABIJ ten PID =>
kill 65829
źródło
Uruchom to polecenie -
wtedy otrzymasz następującą tabelę -
Uruchom to polecenie i zastąp PID z powyższej tabeli
przykład:
źródło
W przypadku tego problemu
Co zrobiłem to:
app/tmp/
a następnie zamknij terminal, na którym uruchamiamy bieżącą aplikację i zamknij zakładkę (w oknie przeglądarki)
następnie ponownie otwórz terminal, wchodząc do folderu, a następnie zrób,
rails s
źródło
najpierw skopiuj numer wewnątrz pliku, a następnie usuń go: rm /your_project_path/tmp/pids/server.pid i utwórz go ponownie. dotknij /YOUR_PROJECT_PATH/tmp/pids/server.pid To zadziałało.
źródło
Uruchom poniższe polecenie na terminalu (tylko dla systemu Linux)
ps aux | grep rails
i wtedy
kill -9 [pid]
Inny sposób
lsof -wni tcp:3000
i wtedy
kill -9 [PID]
źródło
ROZWIĄZYWANIE
Adres już używany - bind (2) ”błąd 500 w Ruby on Rails
Ostatnio próbowałem uruchomić aplikację Rails na serwerze produkcyjnym. Nie tylko to nie zadziałało, ale także zepsuło mój serwer programistyczny localhost: 3000. Lokalny host załadowałby tylko pustą białą stronę lub błąd 500.
Aby rozwiązać ten problem, użyłem dwóch szybkich poleceń. Jeśli nie zwracają one wyniku, być może trzeba będzie poszukać rozwiązania w innym miejscu, ale jest to dobra i szybka naprawa.
lsof -wni tcp: 3000
To polecenie pokazuje wszystkie moje aktualnie uruchomione procesy i ich PID (identyfikatory procesów) na porcie 3000. Ponieważ istnieją uruchomione procesy, które nie zamknęły się poprawnie, mój nowy serwer: 3000 nie może się uruchomić, stąd błąd 500.
zabij 52179
zabij 52180
szyny s
Użyłem polecenia kill Linux, aby ręcznie zatrzymać szkodliwe procesy. Jeśli masz więcej niż 4, po prostu użyj kill na dowolnym identyfikatorze PID, aż pierwsze polecenie stanie się puste. Następnie spróbuj ponownie uruchomić serwer localhost: 3000. To nie uszkodzi twojego komputera! Po prostu zabija istniejące procesy ruby na porcie hosta lokalnego. Nowy serwer rozpocznie te procesy od nowa. Powodzenia!
źródło
ROZWIĄZANIE dla Windows:
źródło
Dla ubuntu 20,
kill -9 $(ps -aef | grep rails)
źródło