วิธีพึ่งพางานพุ่งพรวดจากสคริปต์เริ่มต้นบน Ubuntu 12.04


10

ฉันใช้ Ubuntu 12.04 LTS และระบบนี้ใช้งานพุ่งพรวดเป็นหลัก น่าเสียดายที่ระบบของฉันยังขึ้นอยู่กับเซิร์ฟเวอร์dbmail ที่คอมไพล์ด้วยตนเองซึ่งมีสคริปต์เริ่มต้นเท่านั้น แต่ไม่มีสคริปต์พุ่งพรวด

ใช้update-rc.d dbmail defaultsฉันติดตั้ง dbmail สำหรับ runlevels ทั้งหมด แต่น่าเสียดายที่มันเริ่มต้นก่อนที่ MySQL จะขึ้นดังนั้น daemon จะตายอีกครั้ง ฉันพยายามย้ายไปยัง S90 หรือสิ่งที่คล้ายกันยังไม่มี MySQL เมื่อสคริปต์รัน

ฉันพยายามเพิ่มการอ้างอิงไปยังส่วนหัวของ LSB ของสคริปต์ดังต่อไปนี้:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          dbmail
# Required-Start:    $local_fs $remote_fs $syslog $network mysql
# Required-Stop:     $local_fs $remote_fs $syslog $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start dbmail services
# Description:       Run network services provided by dbmail such as
#                    imap-server, pop3-server, lmtp-server, timsieve-server
### END INIT INFO

น่าเสียดายที่สคริปต์ยังดูเหมือนว่าจะเริ่มก่อนที่ MySQL จะเป็น ฉันคุ้นเคยกับสคริปต์ init แบบเก่า ๆ ไม่ใช่งานธรรมดาดังนั้นฉันจึงสับสนเล็กน้อยที่นี่ ฉันจะเพิ่มการพึ่งพาหรือฉันจะให้mysqlงานเริ่มต้นก่อนdbmailสคริปต์เริ่มต้นได้อย่างไร

ฉันจะตรวจสอบ / ดูคำสั่งเริ่มต้นสำหรับงาน + สคริปต์เริ่มต้นในระหว่างการบูทได้อย่างไร? มีเครื่องมือสำหรับสิ่งนี้หรือไม่?

การเรียกใช้สคริปต์ด้วยตนเองจากเชลล์หลังจากการเริ่มต้นทำงานได้ดีเนื่องจาก MySQL ทำงานอยู่แล้ว


สิ่งที่ทำงานเป็นสิ่งที่หลีกเลี่ยงได้คือการเพิ่ม "sleep 3" ในฟังก์ชัน "start ()" ของสคริปต์ init แต่ต้องมีวิธีที่สะอาดกว่านี่เป็นเพียงการเหยียดหยามสภาพการแข่งขันและฉันต้องการแก้ไขวิธีการที่เหมาะสม
มาร์ตินซี

คำตอบ:


12

ผมคิดว่าถ้าคุณเรียกใช้/etc/init.d/dbmail startจาก/etc/rc.localนั้นก็จะเริ่มทำงานหลังจากงานพุ่งพรวด / สคริปต์ init อื่น ๆ ของคุณ

/etc/init/dbmail.confแต่ผมอาจจะแก้ไขปัญหานี้โดยการเพิ่มงานใหม่พุ่งพรวด โดยปกติแล้วสคริปต์ init.d จะมีรหัสจำนวนมากสำหรับตรวจสอบสถานะและอื่น ๆ มันอาจจะง่ายเหมือน:

start on started mysql
exec /usr/local/bin/dbmail

หรือคุณอาจใช้สคริปต์เริ่มต้นที่มีอยู่เช่นนี้:

start on started mysql
pre-start script
  /etc/init.d/dbmail start
end script
post-stop script
  /etc/init.d/dbmail stop
end script
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.