ฉันมีคำถามเดียวกันและฉันก็พบคำตอบที่ต่างออกไป ผู้เขียนเขียนตัวเลือก 4 ตัวเลือกเพื่อทำสิ่งนี้ซึ่งฉันชอบสิ่งแรกที่ดีที่สุด:
ใช้initclt emit myservice-started
เพื่อส่งสัญญาณความสมบูรณ์ของการเริ่มต้นบริการที่ขึ้นอยู่กับคุณ ในคำตอบที่เชื่อมโยงจะแนะนำให้เพิ่มบรรทัดนี้ในตอนท้ายของinit.d
สคริปต์ของบริการอ้างอิงแต่ฉันชอบวิธีอื่น ฉันต้องการสร้างinid.d
สคริปต์ใหม่ชื่อmyservice-started
ที่มีเฉพาะstart
ส่วน ใช้สไตล์การแสดงความคิดเห็นที่เหมาะสมในส่วนหัวของไฟล์ฉันประกาศว่ามันขึ้นอยู่กับ$myservice
ว่าจะเริ่ม ในstart
ส่วนฉันบอกคนธรรมดาเกี่ยวกับmyservice
การเริ่มต้น update-rc.d
คุณสามารถติดตั้งได้กับ
ฉันชอบวิธีนี้เพราะไม่ก้าวก่าย; หากการอัปเดตเปลี่ยนแปลงinit.d
สคริปต์ใด ๆ ที่มีอยู่ก็จะไม่มีผลกับสคริปต์เพิ่มเติมเหล่านี้ แต่จำไว้ว่าการเปลี่ยนแปลงสคริปต์พุ่งพรวดของคุณจะต้อง
อาจมีลักษณะเช่นนี้:
#!/bin/sh -e
### BEGIN INIT INFO
# Provides: myservice-started
# Required-Start: $myservice
# Default-Start: 2 3 4 5
# Short-Description: send upstart signal after starting myservice
# Description: myservice needs to run before some upstart services can run
### END INIT INFO
. /lib/lsb/init-functions
case "$1" in
start)
log_daemon_msg "Signaling myservice started..." "myservice-started"
initctl emit myservice-started --no-wait
;;
*)
log_action_msg "Usage: /etc/init.d/myservice-started start"
exit 1
;;
esac
exit 0
สคริปต์พุ่งพรวดของคุณรอ myservice สามารถฟังmyservice-started
เหตุการณ์:
start on myservice-started