อ่านman 5 systemd.unit
และman 5 systemd.target
บอกเราว่าไฟล์หน่วยใช้เพื่อกำหนดเป้าหมายเช่นเดียวกับทุกอย่างอื่น systemd ไม่มีเอกสารเกี่ยวกับวิธีสร้างเป้าหมายโดยเฉพาะดังนั้นจึงยากที่จะระบุว่าควรทำอย่างไร แต่ไม่แตกต่างจากการสร้างบริการ
เมื่อคุณสร้างเป้าหมายของคุณคุณจะต้องสร้างsymlinkไปยังtarget.wants
ไดเรกทอรีจากไดเรกทอรี systemd services จากนั้นคุณสามารถตั้งค่า / บูตเป้าหมายของคุณ นี่คือลักษณะที่อาจให้ตัวอย่างของคุณ
/etc/systemd/system/foo.target
นี่คือไฟล์หน่วยของเป้าหมาย หากใช้กราฟิกเซตเป้าหมายเป็นตัวอย่างเราสามารถสร้างเป้าหมายของเราเองโดยใช้เป็นฐาน
[Unit]
Description=Foobar boot target
Requires=multi-user.target
Wants=foobar.service
Conflicts=rescue.service rescue.target
After=multi-user.target rescue.service rescue.target
AllowIsolate=yes
เพื่ออธิบายทางเลือกที่นำมาจาก systemd manpages
Description
- อธิบายถึงเป้าหมาย คุณควรเข้าใจ
Requires
- การพึ่งพายากของเป้าหมาย คุณควรปล่อยให้ระบบพื้นฐานเริ่มก่อนที่จะเริ่มบริการของคุณเอง
Wants
- พึ่งพานุ่ม เป้าหมายไม่จำเป็นต้องเริ่มต้นสิ่งเหล่านี้
Conflicts
- หากหน่วยมีการตั้งค่าความขัดแย้งในหน่วยอื่นการเริ่มต้นก่อนจะหยุดหลังและในทางกลับกัน
After
- บูทหลังจากบริการเหล่านี้
AllowIsolate
- ขึ้นอยู่กับคุณและสภาพแวดล้อมของคุณ รายละเอียดมีอยู่ใน manpagesystemd.unit(5)
/etc/systemd/system/foo.target.wants/
นี่คือไดเรกทอรีที่คุณจะเชื่อมโยงบริการที่คุณสร้าง / ต้องการสำหรับเป้าหมายของคุณ มันเทียบเท่ากับWants=
ตัวเลือกในไฟล์หน่วย สร้างไดเรกทอรีนี้แล้วสร้าง symlink ดังนี้ ln -s /usr/lib/systemd/system/bar.service /etc/systemd/system/foo.target.wants/bar.service
. สิ่งนี้จะสร้าง symlink จาก bar.service ในไดเรกทอรีระบบไปยังไดเรกทอรี foo.target.wants ของคุณ
ฉันคิดว่าการสร้างไฟล์หน่วยสำหรับบริการนั้นไม่ได้อยู่ในขอบเขตของคำตอบนี้และคำถามนั้นได้รับการบันทึกไว้อย่างแน่นอนยิ่งขึ้นดังนั้นฉันจะทิ้งมันไว้ตอนนี้ เมื่อคุณสร้างไฟล์หน่วยของคุณเพียงแค่เชื่อมโยงเข้ากับไดเรกทอรี target.wants หรือเพิ่มลงในWants=
คำสั่ง