El servidor ya se está ejecutando en Rails

137

Cuando estoy iniciando el servidor rails usando el rails scomando, muestraA server is already running. Check C:/Sites/folder/Pids/Server.pids

Cuando abro el archivo, solo muestra un número de 4 dígitos, entonces, ¿cómo podría resolver este problema?

FYI

  1. No se está ejecutando ninguna otra instancia de Rails cmd esta vez.
  2. Comprobó el Administrador de tareas pero solo cmd.exemuestra que no se está ejecutando ningún otro proceso. (usando Windows).
swapnesh
fuente
1
Elimino server.pid de \ tmp \ pids
user6746262

Respuestas:

195

Elimine el archivo: C: /Sites/folder/Pids/Server.pids

Explicación En UNIX land, al menos usualmente rastreamos la identificación del proceso (pid) en un archivo como server.pid. Creo que esto está haciendo lo mismo aquí. Ese archivo probablemente fue dejado por un accidente.

rainkinz
fuente
55
¿qué es exactamente este archivo y hacer causa de este ..can que explique un poco más :)
swapnesh
11
Lo siento, debería haber comentado más. En UNIX land, al menos, generalmente rastreamos la identificación del proceso (pid) en un archivo como server.pid. Creo que esto está haciendo lo mismo aquí. Ese archivo probablemente fue dejado por un accidente.
rainkinz
Creo que lo cloné desde Git, ¿crees que podría ser una causa? github.com/swapnesh/Add_twitter_bootstrap
swapnesh
1
Después de hacer esto, sigo obteniendo un "Puerto en uso" para 3000. ¿Alguien sabe cómo puedo solucionar esto? ¡Gracias!
daveomcd
55
Ejecute netstat -a -oen el símbolo del sistema para ver qué proceso está utilizando el puerto 3000
Rory
172

TL; DR Solo ejecuta este comando para matarlo

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

Causa raíz: debido a que PID está bloqueado en un archivo y el servidor web cree que si ese archivo existe, significa que ya se está ejecutando. Normalmente, cuando se cierra un servidor web, ese archivo se elimina, pero en algunos casos, no se realiza la eliminación adecuada, por lo que debe eliminar el archivo manualmente Nuevas soluciones

cuando corres rieles

=> Arranque WEBrick

=> Aplicación Rails 4.0.4 que comienza en el desarrollo en http://0.0.0.0:3000

=> Ejecutar rails server -hpara obtener más opciones de inicio

=> Ctrl-C para apagar el servidor

Ya se está ejecutando un servidor. Verifique /your_project_path/tmp/pids/server.pid. Salir

Así que coloque la ruta que se muestra aquí /your_project_path/tmp/pids/server.pid

y elimine este archivo server.pid :

rm /your_project_path/tmp/pids/server.pid

O En caso de que su servidor se haya desconectado, siga las siguientes pautas:

Si desconectó su servidor rails usando el comando "rails -d", entonces,

Eliminar rails servidor separado mediante el comando

ps -aef | grep rails

O por este comando

sudo lsof -wni tcp:3000

luego

kill -9 pID

O use este comando

Para buscar y eliminar el proceso por nombre de puerto en el que se ejecuta ese programa. Para 3000, reemplace el puerto en el que se está ejecutando su programa.

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

Antigua solución:

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

También puede encontrar esta publicación para obtener más opciones Actualización de Rails a 3.2.11 saltos ejecutando múltiples servidores

Taimoor Changaiz
fuente
porque el PID está bloqueado en el archivo y el servidor web cree que si ese archivo existe, significa que ya se está ejecutando. Normalmente, cuando se cierra el servidor web que se elimina el archivo, pero en algunos casos la eliminación adecuada no suceden así que hay que eliminar el archivo manualmente
Taimoor Changaiz
Cuidado, esto también matará a tu navegador si apunta a: ¡3000!
Aeramor
1
solución perfecta parasudo kill -9 $(lsof -i :3000 -t)
new2cpp
84
lsof -wni tcp:3000

Entonces deberías ver el proceso de ruby ​​y puedes ejecutar

kill -9 processid

deberías ser bueno para ejecutar el proceso ahora

rails s thin

ejecutar múltiples procesos no parece una buena idea y, por lo que he leído, muchas personas están de acuerdo. Desafortunadamente, he notado muchas pérdidas de memoria con rieles, así que no podía imaginar tener dos procesos en ejecución. Sé que con un tiempo extra mi página se actualiza cada vez más lento debido a los datos que se almacenan en la memoria.

Josh Bedo
fuente
27
kill -9 $(lsof -i tcp:3000 -t)
Karan Purohit
fuente
2
@CalamityAdam Rails generalmente se ejecuta en el puerto 3000. Busca procesos basados ​​en eso y obtiene solo el PID de ellos ( -topción) y luego mata el proceso por ese PID recuperado.
totymedli
13

Puedes deshacerte del proceso matándolo:

kill -9 $(lsof -i tcp:3000 -t)
manu
fuente
Me gusta este. Agradable y conciso, pero completo. Salud.
LunaCodeGirl
11
$ lsof -wni tcp:3000

# Kill the running process
$ kill -9 5946

$ rm tmp/server.pids

capataz iniciar etc. iniciar el servicio

usuario1251378
fuente
4

Ocurre cuando matas el proceso de tu servidor y el archivo pid no se actualizó. La mejor solución es eliminar el archivo Server.pid .

Usa el comando

rm <path to file Server.pid>

Ashish Sharma
fuente
4

gem install shutup

luego vaya a la carpeta actual de su proyecto rails y ejecute

shutup # esto matará el proceso de Rails que se está ejecutando actualmente

Puedes usar el comando 'shutup' cada vez que quieras

DICLAIMER: Soy el creador de esta gema.

NOTA: si está utilizando rvm, instale la gema globalmente

rvm @global do gem install shutup
Lorenzo Sinisi
fuente
3

Probablemente se suspendió el servidor por: ^Z.

El número digital cuatro que vim C:/Sites/folder/Pids/Server.pidssale es la identificación del proceso.

Debería kill -9 processid, reemplazando la identificación del proceso con los 4 números que vim (u otro editor) superó.

Cherenkov
fuente
¿Cuál es la forma correcta de detener el servidor correctamente? CTRL + C?
stt106
1

Si está en Windows, solo necesita hacer un paso como 'reiniciar rieles' y luego escribir nuevamente 'rieles s' Está listo para comenzar.

Alok Amme
fuente
1

En Windows Rails 5.2, elimine este archivo

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

y correr

rails s

de nuevo.

MSC
fuente
1

Correr: fuser -k -n tcp 3000

Esto eliminará el proceso que se ejecuta en el puerto predeterminado 3000.

almawhoob
fuente
0

Acabo de tener este problema e intenté configurarlo en un puerto diferente, pero lo único que tenía que hacer era eliminar mi [app_directory]/tmp/pids/server.pidy todo estaba listo.

Dakota Michael
fuente
0

Correr:

en 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
Syed Shibli
fuente