Tại sao một số dịch vụ systemd trong trạng thái che giấu của Wap?


42

Khi tôi chạy lệnh sudo systemctl list-unit-files(tôi nghĩ sudo là tùy chọn), tôi nhận được đầu ra hiển thị tất cả các dịch vụ và trạng thái của chúng.

Đây là một đoạn từ máy của tôi:

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
...

Tôi tự hỏi tại sao một số dịch vụ ở trạng thái "đeo mặt nạ". Tôi nghĩ điều này có nghĩa là, "điều này tốt hơn là" vô hiệu hóa ", bởi vì dịch vụ không thể được khởi động, bằng tay hoặc bằng systemd".

Làm cách nào tôi có thể biết thêm thông tin về trạng thái của đơn vị dịch vụ?

Ai đã đưa các đơn vị vào trạng thái tương ứng của họ?

Tôi đã thử, ví dụ, sudo systemctl help dsmcad- chỉ đưa ra documentation = ...dòng từ tệp đơn vị./etc/systemd/system/dsmcad.service

Lưu ý: Ở đây tôi biết chính xác dịch vụ dsmcad là gì và nó làm gì, tôi đã tự cài đặt nó. Tôi quan tâm nhiều hơn đến một giải pháp chung.

Câu trả lời:


47

masklà một phiên bản mạnh mẽ hơn của disable. Sử dụng disabletất cả các liên kết tượng trưng của tệp đơn vị được chỉ định sẽ bị xóa. Nếu sử dụng maskcác đơn vị sẽ được liên kết đến /dev/null. Điều này sẽ được hiển thị nếu bạn kiểm tra ví dụ systemctl status halt.service. Ưu điểm của masklà ngăn chặn mọi loại kích hoạt, thậm chí là thủ công.

Thận trọng: systemctl list-unit-filesliệt kê trạng thái của các tệp đơn vị (tĩnh, bật, tắt, che, gián tiếp) và không liên quan gì đến trạng thái của dịch vụ. Để có một cái nhìn vào các dịch vụ sử dụng systemctl list-units.


8
Cũng vui lòng giải thích làm thế nào để loại bỏ trạng thái đeo mặt nạ, nếu muốn.
erikbwork

19
Có một maskvà một unmasklệnh có thể được sử dụng với systemctl. Vì vậy, chỉ cần làm systemctl unmask name_of_service.service.
Kellerpe Rich

đang systemctl unmask name_of_service.serviceloại bỏ hoàn toàn tệp định nghĩa dịch vụ của tôi khỏi /etc/systemd/system/, vì vậy bây giờ tôi cần thêm lại tệp đó. Nếu nó bị che lại lần nữa, tôi sẽ bị kẹt trong một vòng lặp oO
Eldamir

1
Xin chào Eldamir, /etc/systemd/systemchỉ là các liên kết tượng trưng của dịch vụ. Bạn nên thêm *.servicetệp /lib/systemd/systemtừ nơi mà nó sẽ được liên kết đến /etc/systemd/systemnếu bạn enablesử dụng dịch vụ. maskđang tạo một liên kết đến /dev/nullunmaskđang xóa liên kết này khỏi /etc/systemd/systemvà rõ ràng nó không có gì khác biệt nếu ai đó đặt một tập tin ở đó.
Kellerpe Rich

3

hostname.serviceđược che dấu là dự phòng vì systemdđặt tên máy chủ (từ / etc / hostname) từ rất sớm trong quá trình khởi động.

Cài đặt này được cung cấp bởi gói systemd Debian.

$ 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

Tương tự, giờ đây Debian có thể chạy mà không cần tập lệnh shell cho halthệ thống, thay vào đó, nó được xử lý bằng cách tắt hệ thống (mã nguồn ở đây ).

Nếu một dịch vụ đã được che dấu bằng tay, /etc/systemd/systemthay vào đó , mặt nạ sẽ được cài đặt .

Các dịch vụ cũng bị che khi chúng bị xóa trên Debian / Ubuntu . Tôi không biết tại sao.


Mặt nạ so với loại bỏ các dịch vụ đi kèm với sự khác biệt của loại bỏ so với thanh lọc một gói. Trong trường hợp đầu tiên, các tệp cấu hình được lưu giữ và do đó có thể gây nguy hiểm khi kích hoạt dịch vụ do nhầm lẫn (vì tệp dịch vụ có thể vẫn nằm trong các tệp cấu hình). Một gói thanh trừng cũng sẽ loại bỏ các tệp dịch vụ và không bị che.
Fiximan

0

Vì bạn đang yêu cầu thông tin về trạng thái đeo mặt nạ, điều quan trọng là phải đề cập rằng nó có thể được quan sát trong một dịch vụ mà sau khi bắt đầu, nó đã được sửa đổi, tải lại (systemctl daemon-reload) và trạng thái mới là KHÔNG ok . Một ví dụ dễ hiểu là kịch bản sau đây:

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

Do đó, trạng thái đeo mặt nạ có thể được bắt nguồn từ một định nghĩa dịch vụ không phù hợp. Do đó, người dùng có thể gây ra trạng thái lột mặt bằng cách chỉnh sửa dịch vụ không đúng.

Quan sát: Tôi không chắc liệu nó có xảy ra trên mục đích hay đó là một lỗi đơn giản (tùy chọn mặc định), nhưng nó có thể là một số thông tin thú vị để chia sẻ

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.