คำถามติดแท็ก start-stop-daemon

7
วิธีการประมวลผลสัญญาณ SIGTERM อย่างสง่างาม?
สมมติว่าเรามีดีมอนตัวเล็ก ๆ เขียนในไพ ธ อน: def mainloop(): while True: # 1. do # 2. some # 3. important # 4. job # 5. sleep mainloop() และเรา daemonize โดยใช้start-stop-daemonซึ่งเริ่มต้นโดยส่งSIGTERM( TERM) --stopสัญญาณ #2สมมติว่าขั้นตอนการดำเนินการในปัจจุบันมี และในขณะนี้เรากำลังส่งTERMสัญญาณ สิ่งที่เกิดขึ้นคือการกระทำนั้นสิ้นสุดลงทันที ฉันพบว่าฉันสามารถจัดการเหตุการณ์สัญญาณใช้แต่สิ่งที่เป็นว่ามันยังคงขัดจังหวะการดำเนินการในปัจจุบันและผ่านการควบคุมไปsignal.signal(signal.SIGTERM, handler)handler ดังนั้นคำถามของฉันคือ - เป็นไปได้หรือไม่ที่จะไม่ขัดจังหวะการทำงานปัจจุบัน แต่จัดการTERMสัญญาณในเธรดที่แยกจากกัน (?) เพื่อให้ฉันสามารถตั้งค่าshutdown_flag = Trueเพื่อให้mainloop()มีโอกาสหยุดอย่างสง่างาม?

10
ฉันจะล็อก stdout ของกระบวนการที่เริ่มต้นโดย start-stop-daemon ได้อย่างไร
ฉันใช้สคริปต์ init เพื่อเรียกใช้กระบวนการง่ายๆซึ่งเริ่มต้นด้วย: start-stop-daemon --start --quiet --chuid $DAEMONUSER \ --make-pidfile --pidfile $PIDFILE --background \ --exec $DAEMON $DAEMON_ARGS กระบวนการที่เรียกว่า $ DAEMON มักจะพิมพ์ข้อมูลบันทึกไปยังเอาต์พุตมาตรฐาน เท่าที่ฉันสามารถบอกได้ว่าข้อมูลนี้ไม่ได้ถูกเก็บไว้ที่ใดก็ได้ ฉันต้องการเขียนหรือต่อท้าย stdout ของ $ DAEMON ในไฟล์ที่ไหนสักแห่ง ทางออกเดียวที่ฉันรู้คือบอก start-stop-daemon ให้เรียกใช้ shellscript แทน $ DAEMON โดยตรง จากนั้นสคริปต์จะเรียก $ DAEMON และเขียนลงในไฟล์บันทึก แต่นั่นต้องใช้สคริปต์พิเศษซึ่งเช่นเดียวกับการปรับเปลี่ยน daemon เองดูเหมือนจะเป็นวิธีที่ผิดในการแก้ปัญหาทั่วไปดังกล่าว
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.