จะระบุคำสั่ง daemon shutdown ด้วย upstart ได้อย่างไร?


9

ในการกำหนดค่าพุ่งพรวดฉันจะกำหนดสิ่งที่ควรใช้คำสั่งเพื่อปิดเซิร์ฟเวอร์ ให้บอกว่าฉันมีภูตที่มีสองกระบวนการแยก

  • startup.sh - เพื่อเริ่มเซิร์ฟเวอร์
  • shutdown.sh - เพื่อปิดเซิร์ฟเวอร์

สมมติว่าฉันมีไฟล์พุ่งพรวดที่มีลักษณะเช่นนี้

description "Some Example Service"
author "Me"

start on runlevel [2345]
stop on runlevel [016]
respawn

exec startup.sh 

ฉันจะแจ้งให้ทราบล่วงหน้าได้อย่างไรว่าควรเรียกใช้shutdown.shเมื่อปิดเซิร์ฟเวอร์ ปกติพุ่งพรวดคาดหวังว่าจะปิด daemon ได้อย่างไร

คำตอบ:


10

การใช้execเพื่อเริ่มกระบวนการเป็นเรื่องปกติ แต่เมื่อหยุดมันหากคุณต้องการเรียกใช้สคริปต์หรือชุดคำสั่งเฉพาะคุณสามารถใช้ pre-stopstanza ได้

pre-stop exec shutdown.sh

ฉันคิดว่าคุณได้ลองใช้ exec stanza แล้วและมันไม่ทำงานอาจเป็นเพราะ daemon ของคุณต้องการการล้างเฉพาะ โปรดทราบว่า daemons ที่ทำงานได้ดีควรรับสัญญาณจากการพุ่งพรวดเมื่องานหยุดทำงานและหากพวกเขาจัดการสัญญาณอย่างเหมาะสมไม่จำเป็นต้องทำการล้างข้อมูลเพิ่มเติม

การหยุดงานเกี่ยวข้องกับการส่ง SIGTERM ไปให้ หากมีสิ่งใดที่ต้องทำก่อน SIGTERM ให้ทำที่นี่ เนื้อหาบริการควรจัดการ SIGTERM อย่างสง่างามดังนั้นจึงไม่จำเป็น

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

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

แหล่งที่มาของฉันคือตำราอาหารพุ่งพรวดอย่างเป็นทางการที่: http://upstart.ubuntu.com/cookbook/


1
"โปรดทราบว่า daemons ที่มีความประพฤติดีควรรับสัญญาณจากการพุ่งพรวดเมื่องานหยุดทำงานและหากพวกเขาจัดการสัญญาณอย่างเหมาะสมไม่จำเป็นต้องทำการล้างข้อมูลเพิ่มเติม" - โปรดทราบว่าเราใช้สคริปต์ในโลก Unix เพื่อควบคุมสิ่งต่าง ๆ นอกเหนือจากงานโปรแกรมเมอร์ และนี่คือคำพูดที่ไร้สาระเพราะเราต้องการสถานที่ที่จะรวมตัวอย่างเช่นการส่งอีเมลการลบล็อคจากดิสก์ ฯลฯ และงานนี้ไม่จำเป็นต้องเป็นส่วนหนึ่งของภูตเอง ดังนั้นการพุ่งพรวดยังไม่พร้อมที่จะใช้ในสภาพแวดล้อมเซิร์ฟเวอร์
kakaz

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