ฉันมีคำถามเดียวกันและฉันก็พบคำตอบที่ต่างออกไป ผู้เขียนเขียนตัวเลือก 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