Sunucu zaten Rails'te çalışıyor


137

Rails sunucusunu rails skomut kullanarak başlattığımda gösteriyorA server is already running. Check C:/Sites/folder/Pids/Server.pids

Dosyayı açtığımda sadece 4 basamaklı bir sayı çıkarıyor, bu yüzden bu sorunu nasıl çözebilirim?

Bilginize

  1. Bu sefer Rails cmd'nin başka bir örneği çalışmıyor.
  2. Görev yöneticisi işaretlendi, ancak yalnızca cmd.exeişlem yapılmadığını gösteriyor. (Windows kullanarak).

Yanıtlar:


195

Dosyayı kaldırın: C: /Sites/folder/Pids/Server.pids

Açıklama En azından UNIX toprağında genellikle server.pid gibi bir dosyadaki işlem kimliğini (pid) izleriz. Bence bu da aynı şeyi yapıyor. Bu dosya büyük olasılıkla bir çökmeden kaldı.


5
tam olarak bu dosya yapmak ve bunun için neden .. biraz daha açıklayabilir misiniz :)
swapnesh

11
Üzgünüm, daha fazla yorum yapmalıydım. UNIX arazisinde en azından genellikle server.pid gibi bir dosyadaki işlem kimliğini (pid) izleriz. Bence bu da aynı şeyi yapıyor. Bu dosya büyük olasılıkla bir çökmeden kaldı.
rainkinz

Ben Git'ten klonladığımı düşünüyorum, bu yüzden bunun bir neden olabileceğini düşünüyor musunuz? github.com/swapnesh/Add_twitter_bootstrap
swapnesh

1
Bunu yaptıktan sonra 3000 için hala bir "Port kullanımda" alıyorum. Bunu nasıl düzeltebileceğimi bilen var mı? Teşekkürler!
daveomcd

5
netstat -a -o3000 numaralı bağlantı noktasını hangi işlemin kullandığını görmek için komut isteminde çalıştırın
Rory

172

TL; DR Sadece öldürmek için bu komutu çalıştırın

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

Temel Neden: PID bir dosyada kilitlendiğinden ve web sunucusu bu dosya varsa, zaten çalışmakta olduğu anlamına geldiğini düşünüyor. Normalde bir web sunucusu dosya silinmiş olduğu kapalı, ancak el ile dosyayı kaldırmak zorunda bazı durumlarda, uygun silme olmaz zaman Yeni Çözümler

raylar çalıştırdığınızda

=> Önyükleme WEBrick

=> Rails 4.0.4 uygulaması geliştirilme aşamasında http://0.0.0.0:3000

=> rails server -hDaha fazla başlatma seçeneği için çalıştır

=> Kapatma sunucusuna Ctrl-C

Bir sunucu zaten çalışıyor. /Your_project_path/tmp/pids/server.pid adresini kontrol edin. çıkma

Bu yüzden yolunuzu burada gösterilen yere yerleştirin /your_project_path/tmp/pids/server.pid

ve bu server.pid dosyasını kaldırın :

rm /your_project_path/tmp/pids/server.pid

VEYA Sunucunuzun bağlantısı kesilmişse aşağıdaki yönergeleri izleyin:

Rails sunucusunu "rails -d" komutunu kullanarak ayırdıysanız,

Komut kullanarak raylı müstakil sunucuyu kaldırma

ps -aef | grep rails

VEYA bu komutla

sudo lsof -wni tcp:3000

sonra

kill -9 pID

VEYA bu komutu kullanın

Bu programın çalıştığı bağlantı noktası adına göre işlemi bulmak ve öldürmek. 3000 için programınızın çalıştığı bağlantı noktasını değiştirin.

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

Eski Çözüm:

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

Ayrıca daha fazla seçenek için bu gönderiyi bulabilirsiniz Birden fazla sunucu çalıştıran 3.2.11 sonlarına Rails Güncellemesi


PID dosyada kilitli olduğundan ve web sunucusu bu dosya varsa zaten çalışıyor demektir. Normalde web sunucusu kapatıldığında bu dosya silinir, ancak bazı durumlarda düzgün silme gerçekleşmez, bu nedenle dosyayı manuel olarak kaldırmanız gerekir
Taimoor Changaiz 17:16

Dikkatli olun, eğer işaret ediyorsa tarayıcınızı da öldürür: 3000!
Aeramor

1
için mükemmel çözümsudo kill -9 $(lsof -i :3000 -t)
new2cpp

84
lsof -wni tcp:3000

O zaman yakut sürecini görmelisiniz ve koşabilirsiniz

kill -9 processid

şimdi işlemi yürütmek için iyi olmalısın

rails s thin

birden fazla işlem yürütmek iyi bir fikir gibi görünmüyor ve okuduğum kadarıyla birçok insan aynı fikirde. Ne yazık ki raylarla birçok bellek sızıntısı fark ettim, bu yüzden iki işlemin çalıştığını hayal edemedim. Bir fazla mesai ile sayfamın yenilenmesi, verilerin bellekte depolanması nedeniyle giderek daha yavaş hale geldiğini biliyorum.


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

2
@CalamityAdam Rails genellikle 3000 numaralı bağlantı noktasında çalışır. Buna dayalı süreçleri arar ve bunlardan yalnızca PID'yi alır ( -tisteğe bağlı) ve daha sonra geri alınan PID ile işlemi öldürür.
totymedli

13

İşlemi öldürerek kurtulabilirsiniz:

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

Bunu beğendim. Güzel ve özlü, ama tam. Şerefe.
LunaCodeGirl

11
$ lsof -wni tcp:3000

# Kill the running process
$ kill -9 5946

$ rm tmp/server.pids

ustabaşı başlatmak vb hizmet başlatmak


4

Sunucu işleminizi öldürdüğünüzde ve pid dosyası güncellenmediğinde olur. En iyi çözüm Server.pid dosyasını silmektir .

Komutu kullanın

rm <path to file Server.pid>


4

gem install shutup

sonra raylar projenizin geçerli klasörüne gidin ve çalıştırın

shutup # Bu işlem şu anda çalışan Rails işlemini öldürecek

Her seferinde 'kapat' komutunu kullanabilirsiniz

DICLAIMER: Ben bu mücevherin yaratıcısıyım

NOT: rvm kullanıyorsanız gem'i global olarak yükleyin

rvm @global do gem install shutup

3

Muhtemelen sunucuyu şu şekilde askıya aldınız: ^Z .

Çıkan dört dijital sayı vim C:/Sites/folder/Pids/Server.pidsişlem kimliğidir.

Sen gerektiğini kill -9 processid, vim (ya da diğer editör) outputed olduğu 4 numaralı işlem kimliği yerine.


Sunucuyu düzgün şekilde durdurmanın doğru yolu nedir? CTRL + C?
stt106

1

Windows kullanıyorsanız, 'raylar yeniden başlatılır' olarak yalnızca bir adım yapmanız ve ardından 'rails s' yazmanız yeterlidir .


1

Windows Rails 5.2'de bu dosyayı silin

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

ve koş

rails s

tekrar.


1

Çalıştırmak: fuser -k -n tcp 3000

Bu, varsayılan 3000 bağlantı noktasında çalışan işlemi öldürür.


0

Ben sadece bu sorunu vardı ve farklı bir bağlantı noktasına ayarlamaya çalıştım, ama tek yapmam gereken şey silmek [app_directory]/tmp/pids/server.pidoldu ve her şey gitmek güzeldi.


0

Çalıştırmak:

Ubuntu / linux'da

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

Veya

 pkill -9 ruby

veya

lsof -wni tcp:3000

kill -9 pid
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.