สคริปต์จะไม่หยุดอย่างสมบูรณ์


0

ฉันเขียนเชลล์สคริปต์ตัวเล็กนี้เพื่อเริ่มต้นเซิร์ฟเวอร์ WSGI ของ gunicorn สำหรับแอพ django ของฉัน ฉันใช้งานบน Ubuntu 12.04 และสคริปต์เริ่มต้นอย่างหมดจดและทำงานเหมือนที่ควรจะเป็น ปัญหาคือสคริปต์และ gunicorn ยังคงทำงานต่อไป Ctrl - C เช่นไม่มีการแจ้งกลับ

เหตุใดจึงเป็นเช่นนี้และฉันจะแก้ไขได้อย่างไร

สคริปต์:

#!/bin/bash
NUM_WORKERS=3
cd /path/to/my/project
source ../bin/activate

gunicorn_django -w $NUM_WORKERS

ปัญหาเดียวกัน: ไม่สามารถยุติ gunicorn_django ผ่าน Ctrl-C เมื่อเรียกใช้จาก makefile . ฉันเดาว่า: การยกเลิกบน Ctrl-C เป็นทางเลือกทั้งหมด เนื่องจากพฤติกรรมไม่สอดคล้องกันจึงอาจเป็นข้อบกพร่อง
Dennis

ซ้ำจาก stackoverflow.com/q/7959977/114147 . โปรดลองค้นหาในครั้งต่อไป :-)
invert

@wez นั่นไม่ใช่ทางออกที่ดีสำหรับคำถามนี้ ฉันส่งไปยัง gitub ของ gunicorn และพวกเขาได้ส่งการแก้ไขข้อผิดพลาด ฉันจะทดสอบมันในไม่ช้าและดูว่ามันแก้ไขอะไรไหม
HighLife

คำตอบ:


0

วิธีปกติในการเริ่มต้นกระบวนการเซิร์ฟเวอร์คือให้ทำงานในพื้นหลัง เช่น.

gunicorn_django -w $NUM_WORKERS &

วิธีปกติในการหยุดเซิร์ฟเวอร์คือการส่งสัญญาณให้บ่อยครั้งที่กระบวนการของเซิร์ฟเวอร์หรือสคริปต์ที่เริ่มต้นบันทึกของมัน process-ID ลงในไฟล์เพื่อให้สคริปต์หยุดของคุณสามารถทำอะไรบางอย่างเช่น

kill pid

ดูตัวอย่างทั่วไปใน /etc/initd.d สคริปต์


ฉันพยายามเริ่ม / หยุดสคริปต์นี้ด้วยการพุ่งพรวด gunicorn_django จะไม่หยุดที่นั่นอย่างสะอาด
HighLife

killall gunicorn ?
RedGrittyBrick

0

ที่นี่ เป็นการแก้ไขข้อบกพร่อง หลังจากทำการติดตั้งใหม่ทั้งหมดกับสาขานั้นดูเหมือนว่าจะทำงานได้ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.