为什么某些 systemd 服务处于“屏蔽”状态?

knb*_*knb 71 systemd

当我运行命令时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
...
Run Code Online (Sandbox Code Playgroud)

我想知道为什么有些服务处于“屏蔽”状态。我认为这意味着,“这比‘禁用’要好,因为该服务无法启动,无论是手动还是 systemd”。

如何获取有关服务单位状态的更多信息?

谁将这些单位置于各自的状态?

例如,我尝试过 sudo systemctl help dsmcad- 仅从documentation = ...单元文件中调出该行。/etc/systemd/system/dsmcad.service

注意:这里我确切地知道dsmcad服务是什么以及它的作用是什么,我自己安装了它。我对通用解决方案更感兴趣。

Kel*_*her 77

maskdisable. 使用disable指定单元文件的所有符号链接被删除。如果使用mask单位将链接到/dev/null. 如果您检查例如,这将显示systemctl status halt.service。的优点mask是可以防止任何类型的激活,甚至是手动激活。

注意:systemctl list-unit-files列出单元文件的状态(静态、启用、禁用、屏蔽、间接),与服务状态无关。看看服务使用systemctl list-units

  • 有一个 `mask` 和一个 `unmask` 命令可以与 `systemctl` 一起使用。所以只需执行`systemctl unmask name_of_service.service`。 (27认同)
  • 如果需要,还请说明如何去除屏蔽状态。 (13认同)
  • 执行“systemctl unmask name_of_service.service”完全从“/etc/systemd/system/”中删除了我的服务定义文件,所以现在我需要再次将其添加回来。如果再被屏蔽的话我就会陷入循环oO (3认同)
  • 嗨 Eldamir,在`/etc/systemd/system` 中只是服务的符号链接。如果您“启用”服务,您应该将“*.service”文件添加到“/lib/systemd/system”,从那里它会链接到“/etc/systemd/system”。`mask` 正在创建一个指向 `/dev/null` 的链接,而 `unmask` 正在从 `/etc/systemd/system` 中删除这个链接,显然如果有人在那里放了一个文件,这没有什么区别。 (2认同)

小智 7

“mask”是单元文件的一种状态,被视为“第三级关闭”(stop-1st、disable-2nd、mask-3rd)。标记为 masked 的服务既不能手动启动(使用启动命令),也不能由系统启动(在系统启动时)。因此,在服务上使用 systemctl mask 命令时请务必小心。