TL; DR เพียงแค่รันคำสั่งนี้เพื่อฆ่ามัน
sudo kill -9 $(lsof -i :3000 -t)
สาเหตุหลัก:
เนื่องจาก PID ถูกล็อกในไฟล์และเว็บเซิร์ฟเวอร์คิดว่าหากมีไฟล์นั้นอยู่แสดงว่ามันกำลังทำงานอยู่ โดยปกติเมื่อเว็บเซิร์ฟเวอร์ปิดไฟล์นั้นจะถูกลบ แต่ในบางกรณีการลบที่เหมาะสมจะไม่เกิดขึ้นดังนั้นคุณต้องลบไฟล์ด้วยตนเอง
โซลูชันใหม่
เมื่อคุณวิ่งราง s
=> การบูต WEBrick
=> แอปพลิเคชั่น Rails 4.0.4 เริ่มต้นในการพัฒนาบน http://0.0.0.0:3000
=> เรียกใช้rails server -h
สำหรับตัวเลือกการเริ่มต้นเพิ่มเติม
=> Ctrl-C เพื่อปิดเซิร์ฟเวอร์
เซิร์ฟเวอร์กำลังทำงานอยู่ ตรวจสอบ /your_project_path/tmp/pids/server.pid
กำลังออก
ดังนั้นวางเส้นทางของคุณไว้ที่นี่ /your_project_path/tmp/pids/server.pid
และลบไฟล์server.pidนี้:
rm /your_project_path/tmp/pids/server.pid
หรือในกรณีที่เซิร์ฟเวอร์ของคุณไม่ได้เชื่อมต่อให้ปฏิบัติตามคำแนะนำด้านล่าง:
หากคุณแยกเซิร์ฟเวอร์รางของคุณออกโดยใช้คำสั่ง "ราง -d" แล้ว
ลบรางเซิร์ฟเวอร์แยกโดยใช้คำสั่ง
ps -aef | grep rails
หรือตามคำสั่งนี้
sudo lsof -wni tcp:3000
แล้ว
kill -9 pID
หรือใช้คำสั่งนี้
เพื่อค้นหาและฆ่ากระบวนการตามชื่อพอร์ตที่โปรแกรมนั้นกำลังทำงานอยู่ สำหรับ 3000 แทนที่พอร์ตที่โปรแกรมของคุณกำลังทำงานอยู่
sudo kill -9 $(lsof -i :3000 -t)
โซลูชันเก่า:
rails s -p 4000 -P tmp/pids/server2.pid
นอกจากนี้คุณสามารถค้นหาโพสต์นี้สำหรับตัวเลือกเพิ่มเติม
Rails Update to 3.2.11 แบ่งการทำงานหลายเซิร์ฟเวอร์