O servidor já está sendo executado no Rails

137

Quando estou iniciando o servidor rails usando o rails scomando, ele está mostrandoA server is already running. Check C:/Sites/folder/Pids/Server.pids

Quando abro o arquivo, ele está emitindo apenas um número de 4 dígitos. Como posso resolver esse problema?

Para sua informação

  1. Nenhuma outra instância do cmd do Rails está sendo executada neste momento.
  2. Gerenciador de tarefas marcado, mas apenas cmd.exemostrando que nenhum outro processo está em execução. (usando o Windows).
swapnesh
fonte
1
Eu removo server.pid de \ tmp \ pids
user6746262

Respostas:

195

Remova o arquivo: C: /Sites/folder/Pids/Server.pids

Explicação No UNIX, pelo menos, geralmente controlamos a identificação do processo (pid) em um arquivo como server.pid. Eu acho que isso está fazendo a mesma coisa aqui. Esse arquivo provavelmente foi deixado de um acidente.

rainkinz
fonte
5
o que exatamente esse arquivo fazer e causa para este ..can fazer o favor de explicar um pouco mais :)
swapnesh
11
Desculpe, eu deveria ter comentado mais. No UNIX, pelo menos, geralmente controlamos a identificação do processo (pid) em um arquivo como server.pid. Eu acho que isso está fazendo a mesma coisa aqui. Esse arquivo provavelmente foi deixado de um acidente.
25913 rainkinz
Acho que clonei do Git, então você acha que pode ser uma causa? github.com/swapnesh/Add_twitter_bootstrap
swapnesh
1
Depois de fazer isso, ainda estou recebendo uma "Porta em uso" para 3000. Alguém sabe como posso corrigir isso? Obrigado!
Daveomcd
5
Execute netstat -a -oem um prompt de comando para ver qual processo está usando a porta 3000
Rory
172

TL; DR Basta executar este comando para matá-lo

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

Causa Raiz: Como o PID está bloqueado em um arquivo e o servidor da Web pensa que, se esse arquivo existe, significa que já está em execução. Normalmente, quando um servidor da Web é fechado, esse arquivo é excluído, mas, em alguns casos, a exclusão adequada não ocorre; portanto, você deve remover o arquivo manualmente Novas soluções

quando você executa trilhos s

=> Inicializando o WEBrick

=> Aplicativo Rails 4.0.4 iniciando no desenvolvimento em http://0.0.0.0:3000

=> Corra rails server -hpara obter mais opções de inicialização

=> Ctrl-C para desligar o servidor

Um servidor já está em execução. Marque /your_project_path/tmp/pids/server.pid. Saindo

Portanto, coloque seu caminho mostrado aqui /your_project_path/tmp/pids/server.pid

e remova este arquivo server.pid :

rm /your_project_path/tmp/pids/server.pid

OU Caso seu servidor tenha sido desanexado, siga as diretrizes abaixo:

Se você desconectou o servidor Rails usando o comando "rails -d", então,

Remova o servidor desconectado dos trilhos usando o comando

ps -aef | grep rails

OU por este comando

sudo lsof -wni tcp:3000

então

kill -9 pID

OU use este comando

Para localizar e interromper o processo pelo nome da porta na qual esse programa está sendo executado. Para 3000, substitua a porta na qual seu programa está sendo executado.

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

Solução antiga:

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

Além disso, você pode encontrar este post para mais opções Rails Update to 3.2.11 breaks executando vários servidores

Taimoor Changaiz
fonte
porque o PID está bloqueado no arquivo e o servidor da web pensa que, se esse arquivo existir, significa que já está em execução. Normalmente, quando o servidor web está fechado o arquivo é excluído, mas em alguns casos eliminação adequada não acontecem assim que você tem que remover arquivo manualmente
Taimoor Changaiz
Cuidado, isso também matará seu navegador se estiver apontando para: 3000!
Aeramor
1
solução perfeita parasudo kill -9 $(lsof -i :3000 -t)
new2cpp
84
lsof -wni tcp:3000

Então você deverá ver o processo ruby ​​e poderá executar

kill -9 processid

você deve ser bom para executar o processo agora

rails s thin

executar vários processos não parece uma boa ideia e pelo que li muitas pessoas concordam. Eu notei muitos vazamentos de memória com trilhos, infelizmente, então eu não podia imaginar ter dois processos em execução. Sei que com uma hora extra a atualização de minha página se torna cada vez mais lenta devido aos dados armazenados na memória.

Josh Bedo
fonte
27
kill -9 $(lsof -i tcp:3000 -t)
Karan Purohit
fonte
2
O @CalamityAdam Rails geralmente é executado na porta 3000. Ele procura processos com base nisso e obtém apenas o PID deles ( -topção) e depois mata o processo pelo PID recuperado.
totymedli
13

Você pode se livrar do processo matando-o:

kill -9 $(lsof -i tcp:3000 -t)
manu
fonte
Eu gosto deste. Agradável e conciso, mas completo. Felicidades.
Novelas
11
$ lsof -wni tcp:3000

# Kill the running process
$ kill -9 5946

$ rm tmp/server.pids

capataz iniciar etc iniciar o serviço

user1251378
fonte
4

Isso acontece quando você mata o processo do servidor e o arquivo pid não foi atualizado. A melhor solução é excluir o arquivo Server.pid .

Use o comando

rm <path to file Server.pid>

Ashish Sharma
fonte
4

gem install shutup

então vá na pasta atual do seu projeto rails e execute

shutup # isso matará o processo Rails atualmente em execução

Você pode usar o comando 'shutup' toda vez que quiser

DICLAIMER: Eu sou o criador desta gema

NOTA: se você estiver usando o rvm, instale a gema globalmente

rvm @global do gem install shutup
Lorenzo Sinisi
fonte
3

Provavelmente você suspendeu o servidor por: ^Z.

O quatro número digital que vim C:/Sites/folder/Pids/Server.pidssai é a identificação do processo.

Você deve kill -9 processidsubstituir a identificação do processo pelos 4 números que o vim (ou outro editor) produziu.

Cherenkov
fonte
Qual é a maneira correta de parar o servidor corretamente? CTRL + C?
Stt106
1

Se você estiver no Windows, basta executar apenas uma etapa como 'rails restart' e digitar novamente 'rails s'. Você está pronto para prosseguir.

Alok Amme
fonte
1

No Windows Rails 5.2, exclua este arquivo

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

e corra

rails s

novamente.

MSC
fonte
1

Corre: fuser -k -n tcp 3000

Isso interromperá o processo em execução na porta 3000 padrão.

almawhoob
fonte
0

Acabei de ter esse problema e tentei configurá-lo para uma porta diferente, mas a única coisa que eu precisava fazer era excluir o meu [app_directory]/tmp/pids/server.pide tudo estava bem.

Dakota Michael
fonte
0

Corre:

no Ubuntu / linux

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

Ou

 pkill -9 ruby

ou

lsof -wni tcp:3000

kill -9 pid
Syed Shibli
fonte