เอกสารประกอบของ = - (เท่ากับลบ) ในไฟล์ systemd unit


15

บนระบบ Archlinux ของฉัน /usr/lib/systemd/system/mdmonitor.serviceไฟล์มีบรรทัดเหล่านี้:

[Service]
Environment=  MDADM_MONITOR_ARGS=--scan
EnvironmentFile=-/run/sysconfig/mdadm
ExecStartPre=-/usr/lib/systemd/scripts/mdadm_env.sh
ExecStart=/sbin/mdadm --monitor $MDADM_MONITOR_ARGS

ฉันสงสัย (ยืนยันโดย googling บางคน) ว่า=-หมายความว่าบริการไม่ควรล้มเหลวหากไฟล์ที่ระบุไม่มีอยู่ อย่างไรก็ตามฉันไม่พบพฤติกรรมดังกล่าวใน manpage ของไฟล์ systemd unit เอกสารอย่างเป็นทางการสำหรับการ=-มอบหมายอยู่ที่ไหน


1
โปรดทราบว่ามันเป็นเพียงการ=มอบหมายปกติไม่ใช่ไวยากรณ์การกำหนดไฟล์ประเภท. INI ที่สอง
JdeBP

คำตอบ:


20

เอกสารนี้มีไว้ในsystemd.exec:

EnvironmentFile=

[ ... ]

อาร์กิวเมนต์ที่ส่งผ่านควรเป็นชื่อไฟล์สัมบูรณ์หรือนิพจน์ตัวแทนโดยเลือกนำหน้าด้วย " -" ซึ่งระบุว่าหากไม่มีไฟล์อยู่จะไม่มีการอ่านและจะไม่มีการบันทึกข้อผิดพลาดหรือข้อความเตือนใด ๆ

และในsystemd.service:

ExecStart=

...

สำหรับแต่ละคำสั่งที่ระบุอาร์กิวเมนต์แรกต้องเป็นพา ธ สัมบูรณ์ไปยังไฟล์ที่เรียกทำงานได้ ทางเลือกชื่อไฟล์นี้อาจนำหน้าด้วยอักขระพิเศษจำนวนหนึ่ง:

ตารางที่ 1. คำนำหน้าของไฟล์เรียกทำงานพิเศษ

...

ExecStartPre=, ExecStartPost=

...

หากคำสั่งใด ๆ เหล่านั้น (ไม่ได้ขึ้นต้นด้วย-) จะล้มเหลวส่วนที่เหลือจะไม่ถูกดำเนินการและถือว่าหน่วยนั้นล้มเหลว

(หากต้องการค้นหาเอกสารที่สมบูรณ์ที่สุดสำหรับคำสั่ง systemd ให้ค้นหาในsystemd.directives)


1

นอกจากนี้สายเช่น

หลังจาก = -. ติด

ดูเหมือนว่า "เท่ากับลบ" - ไวยากรณ์อื่น แต่แทนที่จะเป็นเพียงรายการAfter=สั่งหน่วยระบบพิเศษ-.mountซึ่งเป็นจุดที่เมาท์ เอกสาร: https://www.freedesktop.org/software/systemd/man/systemd.special.html#-.mount

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.