Server sudah berjalan di Rails


140

Ketika saya memulai server rails menggunakan rails sperintah itu ditampilkanA server is already running. Check C:/Sites/folder/Pids/Server.pids

Ketika saya membuka file itu mengeluarkan angka 4 digit saja jadi bagaimana saya bisa menyelesaikan masalah ini?

FYI

  1. Tidak ada contoh Rails cmd lain yang berjalan saat ini.
  2. Memeriksa Task manager tetapi hanya cmd.exemenunjukkan tidak ada proses lain yang sedang berjalan. (menggunakan Windows).

1
Saya menghapus server.pid dari \ tmp \ pids
user6746262

Jawaban:


198

Hapus file: C: /Sites/folder/Pids/Server.pids

Penjelasan Di lahan UNIX setidaknya kita biasanya melacak proses id (pid) dalam file seperti server.pid. Saya pikir ini melakukan hal yang sama di sini. File itu mungkin tersisa dari kerusakan.


5
apa sebenarnya file ini lakukan dan penyebabnya .. bisakah Anda menjelaskannya sedikit lagi :)
swapnesh

11
Maaf, saya harus berkomentar lebih lanjut. Di lahan UNIX setidaknya kita biasanya melacak id proses (pid) dalam file seperti server.pid. Saya pikir ini melakukan hal yang sama di sini. File itu mungkin tersisa dari kerusakan.
rainkinz

Saya pikir saya mengkloningnya dari Git jadi menurut Anda itu mungkin penyebabnya? github.com/swapnesh/Add_twitter_bootstrap
swapnesh

1
Setelah melakukan ini, saya masih mendapatkan "Port in use" untuk 3000. Adakah yang tahu bagaimana saya bisa memperbaikinya? Terima kasih!
daveomcd

5
Jalankan netstat -a -opada prompt perintah untuk melihat proses apa yang menggunakan port 3000
Rory

182

TL; DR Jalankan saja perintah ini untuk Membunuhnya

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

Akar Penyebab: Karena PID terkunci dalam sebuah file dan web server berpikir bahwa jika file itu ada maka itu berarti sudah berjalan. Biasanya ketika server web ditutup, file tersebut dihapus, tetapi dalam beberapa kasus, penghapusan yang tepat tidak terjadi sehingga Anda harus menghapus file secara manual. Solusi Baru

ketika Anda menjalankan rel s

=> Booting WEBrick

=> Aplikasi Rails 4.0.4 mulai dikembangkan http://0.0.0.0:3000

=> Jalankan rails server -huntuk lebih banyak opsi startup

=> Ctrl-C untuk mematikan server

Server sudah berjalan. Periksa /project_anda/tmp/pids/server.pid. Keluar

Jadi tempatkan jalur Anda yang ditampilkan di sini /project_Anda_tmp/pids/server.pid

dan hapus file server.pid ini :

rm /your_project_path/tmp/pids/server.pid

ATAU Jika server Anda terlepas, ikuti pedoman di bawah ini:

Jika Anda melepaskan server rails Anda dengan menggunakan perintah "rails -d",

Hapus rel server terpisah dengan menggunakan perintah

ps -aef | grep rails

ATAU dengan perintah ini

sudo lsof -wni tcp:3000

kemudian

kill -9 pID

ATAU gunakan perintah ini

Untuk menemukan dan mematikan proses dengan nama port tempat program itu berjalan. Untuk 3000 ganti port tempat program Anda berjalan.

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

Solusi Lama:

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

Anda juga dapat menemukan posting ini untuk opsi lainnya Pembaruan Rails ke 3.2.11 istirahat menjalankan beberapa server


karena PID terkunci dalam file dan web server mengira bahwa jika file itu ada maka itu berarti sudah berjalan. Biasanya ketika server web ditutup file itu dihapus, tetapi dalam beberapa kasus penghapusan yang tepat tidak terjadi sehingga Anda harus menghapus file secara manual
Taimoor Changaiz

Hati-hati ini juga akan mematikan browser Anda jika mengarah ke: 3000!
Aeramour

1
solusi sempurna untuksudo kill -9 $(lsof -i :3000 -t)
new2cpp

84
lsof -wni tcp:3000

Maka Anda akan melihat proses ruby ​​dan Anda dapat menjalankannya

kill -9 processid

Anda seharusnya sudah bisa menjalankan prosesnya sekarang

rails s thin

menjalankan banyak proses sepertinya bukan ide yang bagus dan dari apa yang saya baca banyak orang setuju. Sayangnya saya telah memperhatikan banyak kebocoran memori dengan rel, jadi saya tidak bisa membayangkan memiliki dua proses yang berjalan. Saya tahu dengan satu kali lembur, penyegaran halaman saya semakin lambat karena data disimpan di memori.


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

2
@CalamityAdam Rails biasanya berjalan pada port 3000. Dia mencari proses berdasarkan itu dan hanya mendapatkan PID dari mereka ( -topsi) dan kemudian membunuh proses dengan PID yang diambil itu.
totymedli

13

Anda dapat menyingkirkan proses tersebut dengan membunuhnya:

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

Saya suka yang ini. Bagus dan ringkas, namun lengkap. Bersulang.
LunaCodeGirl

12
$ lsof -wni tcp:3000

# Kill the running process
$ kill -9 5946

$ rm tmp/server.pids

mandor mulai dll memulai layanan


5

gem install shutup

lalu masuk ke folder proyek rel Anda saat ini dan jalankan

shutup # ini akan menghentikan proses Rails yang sedang berjalan

Anda bisa menggunakan perintah 'shutup' setiap kali Anda mau

DICLAIMER: Saya pencipta permata ini

CATATAN: jika Anda menggunakan rvm, instal permata secara global

rvm @global do gem install shutup

4

Itu terjadi ketika Anda mematikan proses server Anda dan file pid tidak diperbarui. Solusi terbaik adalah dengan menghapus file Server.pid .

Gunakan perintah

rm <path to file Server.pid>


3

Mungkin Anda ditangguhkan server dengan: ^Z.

Empat angka digital yang vim C:/Sites/folder/Pids/Server.pidsdikeluarkan adalah id proses.

Anda harus kill -9 processid, mengganti id proses dengan 4 angka yang dihasilkan vim (atau editor lain).


Apa cara yang benar untuk menghentikan server dengan benar? CTRL + C?
stt106

1

Jika Anda menggunakan Windows, Anda hanya perlu melakukan satu langkah saja sebagai 'rails restart' dan kemudian ketik 'rails s' Anda siap melakukannya.


1

Di Windows Rails 5.2, hapus file ini

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

dan lari

rails s

lagi.


1

Lari: fuser -k -n tcp 3000

Ini akan menghentikan proses yang berjalan pada port default 3000.


0

Saya baru saja mengalami masalah ini dan mencoba mengaturnya ke port yang berbeda, tetapi satu-satunya hal yang perlu saya lakukan adalah menghapus saya [app_directory]/tmp/pids/server.piddan semuanya baik-baik saja.


0

Lari:

di Ubuntu / linux

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

Atau

 pkill -9 ruby

atau

lsof -wni tcp:3000

kill -9 pid
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.