เท่าที่ฉันรู้ systemd จะไม่จัดการกับสิ่งนี้เป็นพิเศษ ตามที่ฉันเข้าใจแล้วคุณต้องการแทนที่พฤติกรรมของsshd.service
ใช่ไหม
โชคดีสำหรับคุณ systemd ถูกออกแบบมาสำหรับสิ่งนี้ เพียงแค่ใส่คำนิยามบริการของคุณในการ/etc/systemd/system/ssh.service
ดำเนินการsystemctl daemon-reload
กับไฟล์หน่วยโหลดและ systemd ssh.service
โดยอัตโนมัติจะใช้การกำหนดค่าที่แทนของระบบ
อยากมีsystemctl enable mysshd.service
งานทำด้วยเหรอ? ไม่มีปัญหา. ในส่วนของไฟล์หน่วยของคุณเพิ่มบรรทัดที่บอกว่า[Install]
Alias=mysshd.service
จากนั้นดำเนินการsystemctl reenable ssh.service
เพื่อให้ systemd แก้ไขหน่วยลิงก์สัญลักษณ์และคุณเป็นสีทอง
ตอนนี้คุณยังไม่ได้ให้รายละเอียดเกี่ยวกับสิ่งที่mysshd.service
ควรทำ ถ้ามันแตกต่างจากปกติssh.service
โดยสิ้นเชิงเยี่ยมมาก! ใช้วิธีการด้านบน อย่างไรก็ตามหากคุณต้องการเปลี่ยนสิ่งเล็ก ๆ น้อย ๆ เพียงอย่างเดียวแสดงว่าคุณกำลังใช้วิธีที่ผิด systemd ช่วยให้คุณสร้าง "ตัวอย่าง" ของไฟล์หน่วยที่จะนำไปใช้ด้านบนของไฟล์หน่วยปกติ สิ่งนี้ช่วยให้คุณสามารถเพิ่มหรือลบล้างคำสั่งแต่ละคำสั่งในขณะที่อนุญาตให้ส่วนที่เหลือของไฟล์หน่วยได้รับการปรับปรุงจากผู้จัดการแพคเกจ ในการทำสิ่งนี้เพียงสร้าง/etc/systemd/system/ssh.d/my-custom-config.conf
(คุณสามารถเปลี่ยนmy-custom-config.conf
เป็นสิ่งที่คุณต้องการและคุณยังสามารถมีไฟล์แทนที่ได้หลายไฟล์) ssh.service
ในแฟ้มที่สถานที่สั่งสิ่งที่คุณต้องการที่จะเปลี่ยนแปลงหรือเพิ่มตามปกติ คุณสามารถเพิ่มAlias=
คำสั่งเพื่อใช้systemctl start mysshd.service
งานได้! เพียงจำไว้ว่าให้ดำเนินการsystemctl daemon-reload
หลังจากที่คุณทำ (และถ้าคุณใช้Alias=
, systemctl reenable ssh.service
)
เช่นกันไม่เคยเคยเปลี่ยนไฟล์หน่วย systemd /usr/lib/systemd
ใน ที่เคย! ระบบแฟ้ม Hierarchy มาตรฐานต้องที่/usr
จะถือว่าเป็นอ่านอย่างเดียว ในทางปฏิบัติซึ่งหมายความว่าผู้จัดการบรรจุภัณฑ์จัดการ/usr
(ยกเว้น/usr/local
) และคุณไม่ได้สัมผัสกับสิ่งที่ผู้จัดการบรรจุภัณฑ์จัดการ - โดยเฉพาะอย่างยิ่งเพราะสิ่งที่คุณเปลี่ยนแปลงจะถูกเขียนทับในที่สุด ให้นำสิ่งของของคุณไปวางไว้ที่อื่น/etc
แทน