ให้ daemon ทำงานบน FreeBSD
โปรดทราบว่านี่เป็นคำถามFreeBSDไม่ใช่คำถามเกี่ยวกับ Linux โปรดอย่าตอบว่ามันจะทำบน Linux systemdหรืออะไรก็ได้
ฉันมีสถานการณ์ที่memcachedขัดข้อง ไม่ใช่ว่าทำซ้ำได้และในที่สุดฉันจะคิดออก ในระหว่างนี้ฉันต้องตรวจสอบให้แน่ใจว่าmemcachedกำลังทำงานอยู่ ถ้าไม่เป็นเช่นนั้นฉันต้องรีสตาร์ท จะถูกติดตั้งผ่านทางและเริ่มผ่านpkg /usr/local/etc/rc.d/memcachedมีให้เลือกน้อย
- ฉันจะเขียนสคริปต์จ้องจับผิดและเรียกมันทุกเช่น 10
cronนาทีหรือบางสิ่งบางอย่างผ่าน น่าเกลียด แต่ก็ใช้ได้ สิ่งสำคัญที่นี่คือฉันต้องไปเขียนบทนั้น โทรservice memcached status. ประเมินผลบางทีโทรservice memcached start. ฉันรู้วิธีการเขียน แต่มันดูไม่ชัดเจน ฉันอยากใช้กลไกที่มีอยู่แล้ว - ฉันเขียน
do ... untilสคริปต์วนซ้ำได้ จากนั้นฉันสามารถแก้ไข/usr/local/etc/rc.d/memcachedได้ แต่ฉันต้องการเก็บไฟล์ที่แพคเกจติดตั้งไว้ ฉันไม่ต้องการยืดเวลาการเปลี่ยนแปลงทุกครั้งที่อัปเกรดแพ็คเกจ - ฉันวางสคริปต์เป็นและมีมันเรียกโดย
/usr/local/etc/periodic.d/hourlyperiodic(8)
มีกลไก FreeBSD ที่เรียบง่ายที่ฉันไม่คิดจะให้กระบวนการทำงานต่อไปหรือไม่? หรือฉันแค่คิดมากไปและฉันควรจะเขียนสคริปต์ 8 บรรทัดของฉันและเริ่มเรียกมันจากcron?
คำตอบ
สิ่งที่คุณกำลังมองหาจะเรียกว่าเป็นผู้บังคับบัญชา ฉันไม่คิดว่า FreeBSD มาพร้อมกับกล่องเดียว แต่มีบางส่วนในพอร์ต ฉันเห็นอย่างน้อย;
- Supervisorมีให้ใช้งานเป็นพอร์ตที่เรียกว่าpy-supervisor(พอร์ตมีหลายรสชาติติดตั้ง
pkg install py37-supervisorหรืออะไรก็ได้ที่ตรงกับเวอร์ชัน Python ของคุณ) - daemontoolsสามารถใช้ได้เป็นพอร์ต
- monitสามารถใช้ได้เป็นพอร์ต
- FSCDมีให้ใช้งานเป็นพอร์ตที่เรียกว่าfsc.
ฉันขอแนะนำหัวหน้างาน ติดตั้งแพคเกจและเพิ่มฉันท์ไปที่/usr/local/etc/supervisord.conf:
[program:memcached]
command=/usr/local/etc/rc.d/memcached
ในการเรียกใช้ผู้บังคับบัญชาในเวลาบูตให้แก้ไข/etc/rc.confหรือ/etc/rc.conf.localเพื่อให้มีบรรทัด
supervisord_enable="YES"
memcachedใดก็ตามที่ผู้บังคับบัญชาที่คุณเลือกให้แน่ใจว่าจะปิดการใช้งานเริ่มต้นโดยตรงของ
คุณสามารถทำการรีสตาร์ทdaemon(1)โดยใช้-rแฟล็ก ง่ายกว่ามาก IMHO BTW ฉันดูแลพอร์ต memcached ดังนั้นฉันอาจสามารถช่วยแก้ไขปัญหาการล่มของ memcached ได้โปรดแจ้งให้เราทราบรายละเอียดหากคุณต้องการ