ฉันยังคงจับกับ systemd และได้ทำงานเป็นบางสิ่งบางอย่าง มันไม่ใช่ปัญหามากนัก แต่ฉันต้องการเรียนรู้เพิ่มเติมเกี่ยวกับวิธีการที่เป็นอยู่นี้ ฉันไม่พบการอ้างอิงถึงสิ่งนี้ที่อื่น
/etc/systemd/system
ปิดครั้งแรกผมเข้าใจว่าไฟล์หน่วยที่กำหนดเองสำหรับการให้บริการควรจะไปใน อย่างไรก็ตามมันจะเป็นการดีสำหรับการจัดการเซิร์ฟเวอร์ของเราหากไฟล์หน่วยสามารถอยู่ที่อื่น
ในเอกสารฉันเห็นว่าคุณอาจจะ 'ลิงค์' ไฟล์หน่วยเช่น:
systemctl link /path/to/servicename.service
/etc/systemd/system
นี้จะสร้างการเชื่อมโยงไปในข้างต้น ตอนนี้คุณสามารถเริ่ม / หยุดบริการนี้ได้แล้ว บนพื้นผิวนี้ดูเหมือนเป็นวิธีที่ดีสำหรับเราในการจัดการบริการของเรา
อย่างไรก็ตามการพยายามเปิดใช้งานไฟล์หน่วย 'ลิงก์' นั้นส่งผลให้เกิดความล้มเหลว:
root@test1:/etc/systemd/system# systemctl link /root/myservice.service
Created symlink from /etc/systemd/system/myservice.service to /root/myservice.service.
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/root/myservice.service; linked; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Failed to execute operation: No such file or directory
ใช้ไฟล์หน่วยเดียวกันแน่นอน แต่คัดลอกไปที่/etc/systemd/system
แทนที่จะเชื่อมโยงคุณจะได้รับ:
root@test1:/etc/systemd/system# cp -p /root/myservice.service .
root@test1:/etc/systemd/system# systemctl daemon-reload
root@test1:/etc/systemd/system# systemctl status myservice.service
* myservice.service - My Test Service
Loaded: loaded (/etc/systemd/system/myservice.service; disabled; vendor preset: enabled)
root@test1:/etc/systemd/system# systemctl enable myservice.service
Created symlink from /etc/systemd/system/multi-user.target.wants/myservice.service to /etc/systemd/system/myservice.service.
จากนี้ดูเหมือนว่าเป็นไปไม่ได้ที่จะเปิดใช้งานการเชื่อมโยงในไฟล์ยูนิตเมื่อเริ่มต้นระบบ
หากเป็นกรณีนี้จุดประสงค์ของฟังก์ชั่น 'ลิงก์' คืออะไร? จากเอกสารบอกว่า:
ลิงค์ FILENAME
ลิงก์ไฟล์หน่วยที่ไม่ได้อยู่ในพา ธ การค้นหาไฟล์หน่วยลงในพา ธ การค้นหาไฟล์หน่วย สิ่งนี้ต้องการพา ธ สัมบูรณ์ไปยังไฟล์หน่วย ผลของสิ่งนี้สามารถยกเลิกได้ด้วยการปิดการใช้งาน ผลกระทบของคำสั่งนี้คือไฟล์หน่วยจะพร้อมใช้งานสำหรับคำสั่งเริ่มต้นและคำสั่งอื่น ๆ แม้ว่าจะไม่ได้ติดตั้งโดยตรงในพา ธ การค้นหาหน่วย
systemctl enable
จะต้องดำเนินการเช่นsystemctl link
กันดังนั้นจึงไม่จำเป็นต้องพิมพ์คำสั่ง 2 ;-)