การพึ่งพา Systemd และลำดับการบู๊ต


20

ฉันต้องระบุลำดับการบู๊ตเพื่อให้กระบวนการเริ่มต้น ฉันมี 389 Directory Server และ Samba ทำงานบน Fedora 18. ฉันจะให้บริการเครือข่ายได้อย่างไรจากนั้น 389 DS และ Samba แล้ว? มี GUI สำหรับจัดการสิ่งนี้ใน Fedora หรือไม่?

systemctl enable smb.serviceผมได้เปิดใช้แซมบ้าจะเริ่มต้นด้วย ฉันยังได้เปิดใช้งาน 389 DS systemctl enable dirsrv.targetกับ


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

ฉันควรทราบด้วยว่าเนื่องจากสิ่งนี้กลับมาแล้วคุณไม่ควรเรียกใช้บริการไฟล์ / การพิมพ์บนตัวควบคุมโดเมนของคุณ
Michael Hampton

@ vonbrand ฉันมีปัญหานี้ที่เซิร์ฟเวอร์ DHCP ของฉันต้องการ slapd ที่จะขึ้น (เพราะการกำหนดค่าของมันถูกเก็บไว้ในไดเรกทอรี LDAP) หากไม่เป็นเช่นนั้นเซิร์ฟเวอร์ DHCP จะไม่เกิดขึ้น
เสื่อ

คำตอบ:


25

ใช้systemctl edit smb.serviceเพื่ออัปเดตการอ้างอิง

After=dirsrv.target - จะให้แน่ใจว่า smb.service เริ่มทำงานหลังจาก dirsrv.target

เพื่อความทนทาน (ซึ่งจะคุ้มค่าหากคุณกำลังแก้ไขสิ่งนี้) คุณอาจต้องการรวมสิ่งต่อไปนี้:

Requires=dirsrv.target- เปิดใช้งาน dirsrv.target เมื่อเปิดใช้งาน smb.service จะทำให้ smb.service ล้มเหลวหาก dirsrv.target ล้มเหลว

Wants=dirsrv.target- เปิดใช้งาน dirsrv.target เมื่อเปิดใช้งาน smb.service จะไม่ทำให้ smb.service ล้มเหลวหาก dirsrv.target ล้มเหลว

BindsTo=dirsrv.target - หาก dirsrv.target ถูกปิดการใช้งานให้ปิดใช้งาน smb.service

ที่มา: http://www.freedesktop.org/software/systemd/man/systemd.unit.html

systemd-uiจัดทำ GUI สำหรับ systemd ให้มุมมองที่ดีเกี่ยวกับสถานะของ systemd แต่คุณยังต้องใช้โปรแกรมแก้ไขข้อความเพื่อแก้ไขไฟล์หน่วย


ในกรณีA ต้อง Bสิ่งที่จะพูดว่า "B" มี "ล้มเหลว" เพื่อที่จะไม่เริ่มต้น? โปรแกรม B ส่งคืนค่าที่ไม่เป็นศูนย์หรือไม่
John Wang

2
ลงเพราะสิ่งนี้แนะนำการปฏิบัติที่ไม่ดี อย่าแก้ไข/usr/lib/systemdเวอร์ชันของไฟล์หน่วยเว้นแต่ว่าคุณเป็นผู้ดูแล distro หรือคุณสนุกกับไฟล์ที่เขียนทับในการอัพเดทแต่ละแพ็คเกจ ให้คัดลอกไฟล์หน่วยลงใน/etc/systemdแล้วจึงแก้ไขหรือใช้ไฟล์แบบดรอปอิน (ดูรายละเอียด systemd.unit (5)) ง่ายยิ่งขึ้นเพียงใช้systemctl edit smb.serviceไฟล์มายากลดร็อปอินโดยอัตโนมัติ!
Jeremy Visser

3
ขอบคุณสำหรับการแก้ไขคำตอบ! มันช่วยแก้ไขข้อกังวลและฉันเปลี่ยนเป็น upvote :-)
Jeremy Visser

10

ทำสองสิ่ง:

  1. แก้ไข/lib/systemd/system/smb.serviceไฟล์หน่วยเพื่อระบุการพึ่งพา [unit]ส่วนมีAfter=สายซึ่งระบุสิ่งที่ให้บริการ / เป้าหมายควรจะถึงก่อนนี้

    After=syslog.target network.target nmb.service winbind.service
    

    เปลี่ยนเป็น:

    After=dirsrv.target syslog.target network.target nmb.service winbind.service
    
  2. รายงานการพึ่งพานี้กลับไปที่ Fedora เป็นจุดบกพร่องเพื่อให้สามารถนำมารวมไว้ในการเปิดตัวในอนาคต


ดูเหมือนจะไม่ทำงาน Samba ยังคงทำการบูทก่อน 389
Dylan Klomparens

3
หลังจากที่คุณแก้ไขunitไฟล์คุณควรเรียกใช้systemctl daemon-reload
scottyseus

2

คุณอาจจำเป็นต้องเปลี่ยนหรือรวมบรรทัดที่มีRequiresคำสั่งใน[Unit] ส่วนของ/usr/lib/systemd/system/smb.serviceไฟล์

Requires=dirsrv.target

และ

After=dirsrv.target

ฉันได้โหวตให้กับคำตอบนี้แล้วอย่างไรก็ตามฉันจะไปกับ Wants = dirsrv.target แทนที่จะต้อง = (ดู systemd.unit (5) สำหรับ Wants =)
กาแล็กซี่

2

มีสองทางเลือกในการแก้ไขไฟล์บริการใน/usr/lib/systemd/system(ดูตัวอย่างที่ 2 การแทนที่การตั้งค่าผู้ขาย ):

  1. คัดลอกไฟล์ไปยัง/etc/systemd/systemและทำการแก้ไขบนสำเนา /usr/libแฟ้มนี้สมบูรณ์จะแทนที่ไฟล์ใน

  2. /etc/systemd/system/smb.service.d/local.confสร้างไฟล์ เนื้อหาของไฟล์ควรมีลักษณะคล้ายตัวอย่างด้านล่าง การเลือกนี้จะแทนที่ตัวเลือก "ต้องการ" และ "หลัง" ในผู้ให้บริการไฟล์ที่จัดให้

แต่ละรายการเหล่านี้ (รวมถึงการแก้ไขไฟล์ใน/usr/lib) มีข้อดีและข้อเสีย ตัวเลือกที่ดีที่สุดอาจขึ้นอยู่กับบริการและลักษณะของการดัดแปลง

ขณะที่มันอาจทำงานก็ไม่เพียงพอที่จะเพียง แต่เพิ่ม "หลังจากที่" ตัวเลือก (ดู[Unit] ตัวเลือกมาตรา ) "หลังจาก" ควบคุมลำดับ แต่ไม่ใช่การพึ่งพา หากdirsrv.targetไม่ได้เริ่มด้วยวิธีอื่นการระบุคำสั่งซื้อจะไม่เริ่ม การใช้ตัวเลือก "ต้องการ" หรือ "ต้องการ" จะบังคับdirsrv.targetให้เริ่มต้น

[Unit]
Requires=dirsrv.target
After=dirsrv.target

หมายเหตุ: ฉันไม่รู้ว่าวิธีการนี้ใช้ได้เมื่อมีการถามคำถามนี้หรือไม่

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