Score:0

ตรวจสอบใน ExecStartPre ว่ามี bash binary อยู่หรือไม่

ธง it

ฉันต้องการให้บริการของฉันเริ่มทำงานต่อเมื่อบริการอื่นไม่ได้ใช้งานอยู่ ในการทำเช่นนั้นตามที่อธิบายไว้ใน คำถามอื่นนี้, ฉันกำลังจะ:

ExecStartPre=/bin/bash -xc '/usr/bin/systemctl is-active --quiet other-unit.service && exit 1 || ทางออก 0'

อย่างไรก็ตาม มีความเป็นไปได้เล็กน้อยที่ระบบปฏิบัติการจะไม่รวม /bin/bash ในกรณีนั้น ฉันต้องการให้บริการเริ่มต้นต่อไป ฉันพยายามทำสิ่งนี้ให้สำเร็จโดยใช้:

ExecStartPre=ซึ่ง bash 2>/dev/null && /usr/bin/bash -xc '/usr/bin/systemctl ถูกเปิดใช้งาน --quiet nm-cloud-setup.service && exit 1 || ออก 0' || ทางออก 0

แต่ systemd บ่น:

ซึ่ง[1122772]: /usr/bin/ซึ่ง: ตัวเลือกที่ไม่ถูกต้อง -- 'x'
ซึ่ง[1122772]: /usr/bin/ซึ่ง: ตัวเลือกที่ไม่ถูกต้อง -- 'c'
ซึ่ง[1122772]: /usr/bin/ซึ่ง: ไม่ && ใน (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

ฉันเดาว่า ExecStartPre= ค่อนข้างจำกัด เป็นไปได้ไหมที่จะบรรลุสิ่งที่ฉันต้องการ?

Michael Hampton avatar
cz flag
ทำไมคุณถึงเรียก bash แทนที่จะเป็น /bin/sh
mosquetero avatar
it flag
ฉันวางสิ่งที่อีกฝ่ายตอบ ถ้าฉันเปลี่ยนเป็น /usr/bin/sh ฉันจะแน่ใจได้ไหมว่าจะเป็นส่วนหนึ่งของระบบปฏิบัติการทั้งหมด?
Michael Hampton avatar
cz flag
ฉันพูดว่า `/bin/sh` ไม่ใช่ `/usr/bin/sh` อดีตมีอยู่ในทุกสิ่งที่คล้าย Unix อย่างคลุมเครือในช่วง 50 ปีที่ผ่านมา แม้กระทั่งในโทรศัพท์ของคุณ ฉันไม่ได้พูดอะไรเกี่ยวกับสิ่งหลังและจะไม่นับรวม
mosquetero avatar
it flag
ตกลง. ในกรณีนั้น ฉันไม่จำเป็นต้องตรวจสอบว่ามี `/bin/sh` ไหม ขอบคุณ คุณช่วยเขียนเป็นคำตอบได้ไหม เพื่อที่ฉันจะได้ทำเครื่องหมายคำถามว่าตอบแล้ว
Michael Hampton avatar
cz flag
ตกลง. แต่เพื่อความอยากรู้อยากเห็นฉันอยากรู้ว่าระบบใดรวมถึง systemd แต่ไม่ใช่ bash
mosquetero avatar
it flag
ฉันแค่อยากจะครอบคลุมทุกกรณีที่เป็นไปได้ ฉันเคยเห็น Alpine OS ตัวหนึ่งที่ใช้ systemd เพราะผู้ใช้ติดตั้งมันด้วยวิธีใดวิธีหนึ่ง
Score:1
ธง cz

แทนที่จะเรียก bash คุณควรพิจารณาเรียกเชลล์เป้าหมาย /ถัง/sh ซึ่งมีมาค่อนข้างมากตั้งแต่จุดเริ่มต้นของ Unix และมีอยู่ในทุกสิ่งที่เหมือน Unix อย่างแท้จริง ไปจนถึงโทรศัพท์ของคุณ (แม้ว่าในระบบสมัยใหม่โดยทั่วไปจะถูกแทนที่ด้วยเชลล์ที่มีความสามารถมากกว่าเล็กน้อยซึ่งทำงานในโหมดความเข้ากันได้ของเชลล์เป้าหมายเมื่อถูกเรียกเป็น /ถัง/sh.)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา