ให้ daemon ทำงานบน FreeBSD

Aug 28 2020

โปรดทราบว่านี่เป็นคำถามFreeBSDไม่ใช่คำถามเกี่ยวกับ Linux โปรดอย่าตอบว่ามันจะทำบน Linux systemdหรืออะไรก็ได้

ฉันมีสถานการณ์ที่memcachedขัดข้อง ไม่ใช่ว่าทำซ้ำได้และในที่สุดฉันจะคิดออก ในระหว่างนี้ฉันต้องตรวจสอบให้แน่ใจว่าmemcachedกำลังทำงานอยู่ ถ้าไม่เป็นเช่นนั้นฉันต้องรีสตาร์ท จะถูกติดตั้งผ่านทางและเริ่มผ่านpkg /usr/local/etc/rc.d/memcachedมีให้เลือกน้อย

  1. ฉันจะเขียนสคริปต์จ้องจับผิดและเรียกมันทุกเช่น 10 cronนาทีหรือบางสิ่งบางอย่างผ่าน น่าเกลียด แต่ก็ใช้ได้ สิ่งสำคัญที่นี่คือฉันต้องไปเขียนบทนั้น โทรservice memcached status. ประเมินผลบางทีโทรservice memcached start. ฉันรู้วิธีการเขียน แต่มันดูไม่ชัดเจน ฉันอยากใช้กลไกที่มีอยู่แล้ว
  2. ฉันเขียนdo ... untilสคริปต์วนซ้ำได้ จากนั้นฉันสามารถแก้ไข/usr/local/etc/rc.d/memcachedได้ แต่ฉันต้องการเก็บไฟล์ที่แพคเกจติดตั้งไว้ ฉันไม่ต้องการยืดเวลาการเปลี่ยนแปลงทุกครั้งที่อัปเกรดแพ็คเกจ
  3. ฉันวางสคริปต์เป็นและมีมันเรียกโดย/usr/local/etc/periodic.d/hourlyperiodic(8)

มีกลไก FreeBSD ที่เรียบง่ายที่ฉันไม่คิดจะให้กระบวนการทำงานต่อไปหรือไม่? หรือฉันแค่คิดมากไปและฉันควรจะเขียนสคริปต์ 8 บรรทัดของฉันและเริ่มเรียกมันจากcron?

คำตอบ

5 Gilles'SO-stopbeingevil' Aug 28 2020 at 04:46

สิ่งที่คุณกำลังมองหาจะเรียกว่าเป็นผู้บังคับบัญชา ฉันไม่คิดว่า 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ใดก็ตามที่ผู้บังคับบัญชาที่คุณเลือกให้แน่ใจว่าจะปิดการใช้งานเริ่มต้นโดยตรงของ

SteveWills Sep 10 2020 at 04:07

คุณสามารถทำการรีสตาร์ทdaemon(1)โดยใช้-rแฟล็ก ง่ายกว่ามาก IMHO BTW ฉันดูแลพอร์ต memcached ดังนั้นฉันอาจสามารถช่วยแก้ไขปัญหาการล่มของ memcached ได้โปรดแจ้งให้เราทราบรายละเอียดหากคุณต้องการ