หากมีการบริการenabled
ก็จะมี symlink อยู่ที่ไหนสักแห่ง
/etc/systemd/system
ไปยังไฟล์หน่วยซึ่งส่วนใหญ่มักจะอยู่ที่ไหนสักแห่งใน
/lib/systemd/system
มีประโยชน์เมื่อคุณenable
ให้บริการเส้นทางแบบเต็มของลิงก์และเป้าหมายที่สร้างขึ้นจะถูกพิมพ์ไปยัง stdout
ปิดการใช้งานบริการลบ symlink ดังนั้นไฟล์หน่วยตัวเองไม่ได้รับผลกระทบ แต่บริการไม่ได้โหลดที่บูตถัดไปเมื่อ systemd /etc/systemd/system
อ่าน
อย่างไรก็ตามการให้บริการคนพิการสามารถโหลดและจะเริ่มต้นถ้าบริการที่ขึ้นอยู่กับว่ามันจะเริ่มต้น ; enable
และdisable
กำหนดค่าพฤติกรรมเริ่มต้นอัตโนมัติสำหรับหน่วยเท่านั้นและสถานะจะถูกแทนที่ได้อย่างง่ายดาย
สวมหน้ากากบริการเป็นหนึ่งที่มีหน่วยเป็นไฟล์ symlink /dev/null
ไป สิ่งนี้ทำให้ "เป็นไปไม่ได้" ในการโหลดบริการแม้ว่าจะเป็นบริการอื่นที่เปิดใช้งานก็ตาม
เมื่อคุณmask
ให้บริการ symlink จะถูกสร้างขึ้นจาก/etc/systemd/system
ถึง/dev/null
ออกจากไฟล์หน่วยดั้งเดิมที่อื่น ๆ โดยไม่มีการแตะต้อง เมื่อคุณunmask
ให้บริการ symlink จะถูกลบ
อย่างไรก็ตามฉันสังเกตเห็นว่าคำสั่งเหล่านี้ไม่ได้รับเกียรติเสมอไป
เมื่อฉันพยายามที่จะปิดบังบริการส่วนใหญ่มันล้มเหลว:
$ sudo systemctl mask bluetooth.service
Failed to execute operation: Invalid argument
แน่นอนฉันหยุดให้บริการก่อน @Anwar แนะนำให้ปิดบังได้เฉพาะกับบริการที่ไม่สำคัญเท่านั้น
เปิดโปงบริการที่สวมหน้ากากยกเว้นว่าฉันปิดบังตัวเองก็ล้มเหลวเช่นกัน ฉันเชื่อว่าเป็นเพราะไม่มีไฟล์หน่วยสำหรับบริการที่ใดก็ได้ยกเว้นในรูปแบบของ symlink ไป/dev/null
คราวนี้ใน/lib/systemd/system
:
$ file $(locate fuse.service)
/lib/systemd/system/fuse.service: symbolic link to /dev/null
$ sudo systemctl unmask fuse.service
$ systemctl status fuse
● fuse.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead)
ฉันไม่ใช่คนเดียวที่มีปัญหานี้
ที่จริงการเปิดโปงการหลอกลวงบริการ x11 ทั่วไปผมต้องลบ symlink ไปและ/dev/null
sudo apt-get install --reinstall x11-common && sudo systemctl daemon-reload
ตอนนี้เมื่อฉันถามด้วยsystemctl status x11-common
ฉันเห็นบริการมีวงกลมสีเขียวที่ดีและมีการโหลดและใช้งาน (ออก) แม้ว่ามันจะไม่มีไฟล์หน่วย
สำหรับการอ้างอิงเพิ่มเติมบทความนี้เกี่ยวกับวิธีการใช้ Systemctlอาจมีการใช้งานบางส่วน