systemctl, วิธีการเปิดเผย


27
root@gcomputer:~# systemctl status x11-common
● x11-common.service
   Loaded: masked (/dev/null; bad)
   Active: inactive (dead)

ฉันพยายามsystemctl unmask x11-commonแล้วsystemctl unmask x11-common.serviceแต่นั่นก็ไม่ได้เปลี่ยนแปลงอะไรเลย

ฉันจะเปิดเผยได้อย่างไร

คำตอบ:


35

คำสั่งที่คุณกำลังใช้มีทั้งที่ถูกต้อง ดูเพิ่มเติมคู่มือ

ดูเหมือนว่าunmaskคำสั่งล้มเหลวเมื่อไม่มีไฟล์หน่วยที่มีอยู่ในระบบอื่นที่ไม่ใช่ symlink /dev/nullไป หากคุณmaskให้บริการแล้วที่สร้าง symlink ใหม่ที่จะ/dev/nullอยู่ใน/etc/systemd/systemที่ที่มีลักษณะ systemd สำหรับไฟล์หน่วยภาระที่บูต ในกรณีนี้ไม่มีไฟล์หน่วยจริง

คนอื่นดูเหมือนจะมีปัญหาที่คล้ายกัน

x11-common.serviceถูกหลอกลวงด้วยระบบของฉัน คุณสามารถแก้ไขได้ดังนี้:

ตรวจสอบก่อนว่าไฟล์หน่วยเป็น symlink /dev/null

file /lib/systemd/system/x11-common.service

มันควรจะกลับมา:

/lib/systemd/system/x11-common.service: symbolic link to /dev/null

ในกรณีนี้ให้ลบ

sudo rm /lib/systemd/system/x11-common.service

เนื่องจากคุณเปลี่ยนไฟล์หน่วยคุณต้องเรียกใช้สิ่งนี้:

sudo systemctl daemon-reload

ตอนนี้ตรวจสอบสถานะ:

systemctl status x11-common

หากไม่ได้ระบุว่าโหลดและใช้งาน (หากวงกลมยังคงเป็นสีแดง) ให้ติดตั้งแพคเกจใหม่:

sudo apt-get install --reinstall x11-common

และโหลด daemon อีกครั้ง

sudo systemctl daemon-reload

และตรวจสอบสถานะอีกครั้ง

systemctl status x11-common

ตอนนี้มันเป็นสีเขียวและกำลังรัน :) เซอร์วิสไม่มีไฟล์ systemd unit แต่ systemd ใช้สคริปต์อย่างมีความสุข/etc/init.dแทน


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

@Albert [ดูที่นี่] ( askubuntu.com/questions/712276/ ...... ) ดูเหมือนว่าบริการจะทำงานโดยไม่มีไฟล์ systemd unit (มีไฟล์ใน/etc/init/... ) คุณอาจต้องการถามคำถามใหม่ สิ่งที่ฉันทำไม่มีความแตกต่างที่ชัดเจนเฉพาะบริการที่แสดงเป็นโหลดเปิดใช้งานหยุด (มันทำงานเมื่อเริ่มต้น) (สีเขียว) แทนที่จะโหลดมาสก์ที่ตายแล้ว (สีแดง) ฉันควรอ่านบันทึกของฉัน ...
Zanna

หากมีการอัปเดตสำหรับ systemd ไฟล์หน่วยจะถูกติดตั้งใหม่ดังนั้นนี่ไม่ใช่วิธีแก้ปัญหาเชิงโครงสร้างจริงๆ
hbogert

@hbogert นั้นเกิดขึ้นแม้ว่าจะไม่มีไฟล์หน่วยใดนอกเหนือจาก symlink ไป/dev/nullหรือไม่ คุณมีความถูกต้องเกี่ยวกับคำตอบของฉัน ฉันจะเรียกวิธีแก้ปัญหานี้เป็นการแก้ปัญหาสำหรับ ... พฤติกรรมที่ทำให้สับสน ... ของ systemd
Zanna

คุณช่วยอธิบายประโยคแรกของคุณในแง่ของไฟล์ที่แน่นอนซึ่งมีความสำคัญในกรณีนี้ (เพราะฉันไม่เข้าใจสถานการณ์ที่คุณอธิบาย)
hbogert

2

อาจเป็นเพราะบริการของคุณมีไฟล์แทนที่ที่ว่างเปล่าเช่นนี้:

● redis-server.service - ที่เก็บคีย์ - ค่าขั้นสูงโหลดแล้ว: โหลด (/lib/systemd/system/redis-server.service; masked; preset ของผู้ขาย: เปิดใช้งาน) Drop-In: / etc / systemd / system / redis-server .service.d └─limit.conf

ตรวจสอบว่า limit.conf เป็นไฟล์ว่างเปล่า หากเป็นเช่นนั้นโปรดลบออก จากนั้นบริการควรถูกเปิดเผย


0

ทำตามขั้นตอนด้านล่าง:

  1. systemctl edit systemd-hostnamed

    เพิ่ม 2 บรรทัดด้านล่างจากนั้นออกจากตัวแก้ไข (อย่าลืมบันทึกเมื่อได้รับแจ้ง):

    [Service]
    PrivateNetwork=no
    
  2. สิ่งนี้จะสร้างไฟล์ override.conf ด้วย 2 บรรทัดด้านบนในไดเรกทอรี:

    /etc/systemd/system/systemd-hostnamed.service.d/
    
  3. การอัพเดต systemd:

    systemctl daemon-reload
    
  4. จากนั้นเริ่มบริการ:

    systemctl restart systemd-hostnamed
    

ตอนนี้คุณควรจะสามารถทำงานได้hostnamectlโดยไม่หยุดทำงาน

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