เหตุใดบริการ systemd บางอย่างในสถานะ“ ปิดบัง”


42

เมื่อฉันเรียกใช้คำสั่งsudo systemctl list-unit-files(ฉันคิดว่า sudo เป็นตัวเลือก) ฉันได้รับผลลัพธ์ซึ่งแสดงบริการทั้งหมดและสถานะของพวกเขา

นี่คือตัวอย่างจากเครื่องของฉัน:

UNIT FILE                                  STATE
...
debian-fixup.service                       static  
debug-shell.service                        disabled
display-manager.service                    enabled 
dns-clean.service                          enabled 
dsmcad.service                             enabled 
emergency.service                          static  
failsafe-x.service                         static  
friendly-recovery.service                  masked  
fuse.service                               masked  
gdm.service                                masked  
getty-static.service                       static  
getty@.service                             enabled 
gpsd.service                               indirect
gpsdctl@.service                           static  
gpu-manager.service                        enabled 
halt-local.service                         static  
halt.service                               masked  
hostname.service                           masked
...

ฉันสงสัยว่าทำไมบริการบางอย่างจึงอยู่ในสถานะ "ปิดบัง" ฉันคิดว่านี่หมายถึง "สิ่งนี้ดีกว่า 'ปิดใช้งาน' เนื่องจากไม่สามารถเริ่มบริการได้ไม่ว่าด้วยมือหรือโดย systemd"

ฉันจะรับข้อมูลเพิ่มเติมเกี่ยวกับสถานะของหน่วยบริการได้อย่างไร

ใครทำให้หน่วยอยู่ในสถานะที่เกี่ยวข้อง

ยกตัวอย่างเช่นฉันลอง sudo systemctl help dsmcad- นั่นแสดงให้เห็นdocumentation = ...บรรทัดจากไฟล์หน่วยเท่านั้น/etc/systemd/system/dsmcad.service

หมายเหตุ: ที่นี่ฉันรู้ว่าบริการ dsmcad คืออะไรและทำอะไรฉันได้ติดตั้งด้วยตัวเอง ฉันสนใจโซลูชันทั่วไปมากกว่า

คำตอบ:


47

maskdisableเป็นรุ่นที่แข็งแกร่งของ การใช้disablesymlink ทั้งหมดของไฟล์หน่วยที่ระบุจะถูกลบออก หากมีการใช้หน่วยงานที่จะเชื่อมโยงกับmask นี้จะปรากฏถ้าคุณตรวจสอบเช่นโดย/dev/null systemctl status halt.serviceข้อได้เปรียบของmaskการป้องกันการเปิดใช้งานใด ๆ แม้แต่คู่มือ

ข้อควรระวัง: systemctl list-unit-filesกำลังแสดงรายการสถานะของไฟล์หน่วย(คงที่เปิดใช้งานปิดใช้งานปิดบังทางอ้อม) และไม่มีอะไรเกี่ยวข้องกับสถานะของบริการ มีลักษณะที่เป็นบริการที่systemctl list-unitsใช้งาน


7
โปรดอธิบายวิธีการลบสถานะที่ถูกพรางหากต้องการ
erikbwork

19
มีความเป็นmaskและคำสั่งที่สามารถใช้กับunmask ดังนั้นเพียงแค่ทำsystemctl systemctl unmask name_of_service.service
Kellerspeicher

การsystemctl unmask name_of_service.serviceดำเนินการลบไฟล์คำจำกัดความบริการของฉันออกอย่างสมบูรณ์/etc/systemd/system/ดังนั้นตอนนี้ฉันต้องเพิ่มอีกครั้ง หากมันกลายเป็นหน้ากากอีกครั้งฉันจะติดอยู่ในลูป oO
Eldamir

1
สวัสดี Eldamir /etc/systemd/systemเป็นเพียงสัญลักษณ์เชื่อมโยงของการบริการ คุณควรเพิ่ม*.serviceไฟล์/lib/systemd/systemจากที่มันจะเชื่อมโยงกับ/etc/systemd/systemถ้าคุณenableบริการ maskกำลังสร้างลิงก์ไปยัง/dev/nullและunmaskลบลิงก์นี้ออกจาก/etc/systemd/systemและเห็นได้ชัดว่ามันไม่ทำให้เกิดความแตกต่างถ้ามีคนใส่ไฟล์ไว้ที่นั่น
Kellerspeicher

3

hostname.serviceถูกพรางเป็นแบบซ้ำซ้อนเนื่องจากsystemdตั้งค่าชื่อโฮสต์ (จาก / etc / hostname) ตั้งแต่ต้นในระหว่างการเริ่มต้น

การตั้งค่านี้จัดทำโดยแพ็คเกจ Debian systemd

$ ls -l /lib/systemd/system/hostname.service
lrwxrwxrwx 1 root root 9 Apr  8 22:47 /lib/systemd/system/hostname.service -> /dev/null
$ dpkg-query --search /lib/systemd/system/hostname.service
systemd: /lib/systemd/system/hostname.service

ในทำนองเดียวกัน Debian สามารถรันได้โดยไม่ต้องเชลล์สคริปต์ไปhaltยังระบบมันถูกจัดการโดยsystemd-shutdown (ซอร์สโค้ดที่นี่ ) แทน

หากบริการถูกปิดบังด้วยตนเองหน้ากากจะถูกติดตั้ง/etc/systemd/systemแทน

การบริการจะถูกสวมหน้ากากเมื่อพวกเขาจะถูกลบออกใน Debian ฉันไม่รู้ว่าทำไม


0

เนื่องจากคุณกำลังร้องขอข้อมูลเกี่ยวกับสถานะสวมหน้ากากมันเป็นสิ่งสำคัญที่จะพูดถึงว่ามันสามารถสังเกตได้ในการให้บริการว่าหลังจากที่เริ่มมีคำจำกัดความมันแก้ไขโหลด (systemctl ภูต-โหลด) และรัฐใหม่ไม่ได้ตกลง ตัวอย่างง่ายๆที่เข้าใจได้คือสถานการณ์สมมติต่อไปนี้:

a) the service is running well (already started)
b) edit the service definition file and delete everything in its contents
c) reload
d) state masked will be observed too

ดังนั้นสถานะที่ถูกหลอกลวงอาจเกิดขึ้นจากคำจำกัดความบริการที่ไม่เหมาะสม ดังนั้นผู้ใช้อาจชักนำให้เกิดสภาวะที่ไม่ได้รับการเปิดเผยโดยการแก้ไขการให้บริการที่ไม่เหมาะสม

การสังเกต: ฉันไม่แน่ใจว่ามันเกิดขึ้นตามวัตถุประสงค์หรือเป็นข้อผิดพลาดง่ายๆ (ตัวเลือกเริ่มต้น) แต่อาจเป็นข้อมูลที่น่าสนใจที่จะแบ่งปัน

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