Il server è già in esecuzione in Rails


137

Quando sto avviando il server rails usando il rails scomando sta mostrandoA server is already running. Check C:/Sites/folder/Pids/Server.pids

Quando apro il file, viene emesso solo un numero di 4 cifre, quindi come posso risolvere questo problema?

FYI

  1. Nessun'altra istanza di Rails cmd è in esecuzione questa volta.
  2. Gestione attività selezionata ma cmd.exemostra solo che nessun altro processo è in esecuzione. (usando Windows).

1
Rimuovo server.pid da \ tmp \ pids
user6746262

Risposte:


195

Rimuovere il file: C: /Sites/folder/Pids/Server.pids

Spiegazione Nella terra UNIX almeno di solito seguiamo l'id del processo (pid) in un file come server.pid. Penso che questo stia facendo la stessa cosa qui. Quel file è stato probabilmente lasciato da un arresto anomalo.


5
cosa fa esattamente questo file e causa per questo ..può spiegarlo un po 'di più :)
swapnesh,

11
Mi dispiace, avrei dovuto commentare ulteriormente. Nella terra UNIX, di solito, tracciamo l'id del processo (pid) in un file come server.pid. Penso che questo stia facendo la stessa cosa qui. Quel file è stato probabilmente lasciato da un arresto anomalo.
Rainkinz,

Penso di averlo clonato da Git, quindi pensi che potrebbe essere una causa? github.com/swapnesh/Add_twitter_bootstrap
swapnesh

1
Dopo aver fatto ciò, sto ancora ottenendo una "Porta in uso" per 3000. Qualcuno sa come posso risolvere questo problema? Grazie!
daveomcd,

5
Esegui netstat -a -oal prompt dei comandi per vedere quale processo utilizza la porta 3000
Rory

172

TL; DR Basta eseguire questo comando per ucciderlo

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

Causa principale: poiché il PID è bloccato in un file e il server Web pensa che se quel file esiste significa che è già in esecuzione. Normalmente quando un server Web viene chiuso quel file viene eliminato, ma in alcuni casi non si verifica la corretta eliminazione, quindi è necessario rimuovere il file manualmente Nuove soluzioni

quando corri su rotaie s

=> Avvio di WEBrick

=> Applicazione Rails 4.0.4 che inizia lo sviluppo il http://0.0.0.0:3000

=> Esegui rails server -hper ulteriori opzioni di avvio

=> Ctrl-C per arrestare il server

Un server è già in esecuzione. Controlla / your_project_path/tmp/pids/server.pid. Uscita

Quindi posiziona il tuo percorso mostrato qui / your_project_path/tmp/pids/server.pid

e rimuovi questo file server.pid :

rm /your_project_path/tmp/pids/server.pid

OPPURE Nel caso in cui il tuo server sia stato staccato, segui le linee guida seguenti:

Se hai disconnesso il tuo server rails usando il comando "rails -d", allora,

Rimuovere il server separato dalle rotaie utilizzando il comando

ps -aef | grep rails

O con questo comando

sudo lsof -wni tcp:3000

poi

kill -9 pID

O usa questo comando

Per trovare e terminare il processo in base al nome della porta su cui è in esecuzione quel programma. Per 3000 sostituire la porta su cui è in esecuzione il programma.

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

Vecchia soluzione:

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

Inoltre puoi trovare questo post per ulteriori opzioni Rails Update to 3.2.11 interrompe l'esecuzione di più server


perché il PID è bloccato nel file e il server Web pensa che se quel file esiste significa che è già in esecuzione. Normalmente quando il web server viene chiuso quel file viene eliminato, ma in alcuni casi non si verifica la corretta eliminazione, quindi è necessario rimuovere il file manualmente
Taimoor Changaiz

Attento questo ucciderà anche il tuo browser se punta a: 3000!
Aeramor,

1
soluzione perfetta persudo kill -9 $(lsof -i :3000 -t)
new2cpp il

84
lsof -wni tcp:3000

Quindi dovresti vedere il processo ruby ​​ed è possibile eseguire

kill -9 processid

dovresti essere bravo a eseguire il processo ora

rails s thin

eseguire più processi non sembra una buona idea e da quello che ho letto molte persone concordano. Purtroppo ho notato molte perdite di memoria con i binari, quindi non potevo immaginare di avere due processi in esecuzione. So che con uno straordinario la mia pagina si aggiorna sempre più lentamente a causa dei dati memorizzati.


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

2
@CalamityAdam Rails di solito viene eseguito sulla porta 3000. Cerca i processi in base a quello e ne ottiene solo il PID ( -topzione), quindi termina il processo con quel PID recuperato.
totymedli,

13

Puoi sbarazzarti del processo uccidendolo:

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

Mi piace questa. Bello e conciso, ma completo. Saluti.
LunaCodeGirl

11
$ lsof -wni tcp:3000

# Kill the running process
$ kill -9 5946

$ rm tmp/server.pids

caposquadra avviare ecc. avviare il servizio


4

Succede quando si interrompe il processo del server e il file pid non è stato aggiornato. La soluzione migliore è eliminare il file Server.pid .

Usa il comando

rm <path to file Server.pid>


4

gem install shutup

quindi vai nella cartella corrente del tuo progetto rails ed esegui

shutup # questo interromperà il processo Rails attualmente in esecuzione

Puoi usare il comando 'shutup' ogni volta che vuoi

DICLAIMER: Sono il creatore di questa gemma

NOTA: se si utilizza rvm, installare la gemma a livello globale

rvm @global do gem install shutup

3

Probabilmente sospeso il server: ^Z.

Il numero digitale quattro che vim C:/Sites/folder/Pids/Server.pidsemette è l'id del processo.

Dovresti kill -9 processid, sostituendo l'id di processo con i 4 numeri che vim (o altro editor) ha prodotto.


Qual è il modo giusto per arrestare correttamente il server? CTRL + C?
stt106,

1

Se sei su Windows, devi solo fare un passo come 'rails restart' e poi digitare di nuovo 'rails s' Sei pronto per partire.


1

Su Windows Rails 5.2, elimina questo file

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

e corri

rails s

ancora.


1

Correre: fuser -k -n tcp 3000

Ciò interromperà il processo in esecuzione sulla porta predefinita 3000.


0

Ho appena avuto questo problema e ho provato a impostarlo su una porta diversa, ma l'unica cosa che dovevo fare era eliminare il mio [app_directory]/tmp/pids/server.pided era tutto a posto.


0

Correre:

in Ubuntu / linux

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

O

 pkill -9 ruby

o

lsof -wni tcp:3000

kill -9 pid
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.