Почему некоторые службы systemd находятся в "замаскированном" состоянии?

Когда я выполняю команду sudo systemctl list-unit-files (Я думаю, что sudo является необязательным), я получаю вывод, который показывает все службы и их состояние.

Вот фрагмент из моей машины:

UNIT FILE                                  STATE...debian-fixup.service                       static  debug-shell.service                        disableddisplay-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                               indirectgpsdctl@.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 и что она делает, я установил ее сам. Меня больше интересует общее решение.

mask является более сильной версией disable. Используя disable все символические ссылки на указанный модульный файл удаляются. При использовании mask подразделения будут связаны с /dev/null. Это будет отображаться, если вы установите флажок, например, с помощью systemctl status halt.service. Преимущество mask заключается в том, чтобы предотвратить любую активацию, даже ручную.

Осторожность: systemctl list-unit-files перечисляет состояние устройства файлы (статический, включенный, отключенный, замаскированный, косвенный) и не имеет ничего общего с состоянием службы. Чтобы взглянуть на услуги использовать systemctl list-units.

hostname.service замаскирован как избыточный, потому что systemd задает имя хоста (из /etc/hostname) на самом раннем этапе запуска.

Этот параметр предоставляется пакетом Debian systemd.

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

Аналогичным образом, Debian теперь может запускаться без сценария оболочки для halt система, она обрабатывается systemd-завершение работы (исходный код здесь) вместо этого.

Если служба была замаскирована вручную, маска будет установлена в /etc/systemd/system вместо.

Службы также маскируются, когда они удаляются в Debian/Ubuntu. Я не знаю почему.

Поскольку вы запрашиваете информацию о замаскированном состоянии, важно отметить, что его можно наблюдать в службе, которая после запуска изменила свои определения, перезагрузила (systemctl daemon-reload) и новое состояние НЕ в порядке. Одним из простых примеров для понимания этого является следующий сценарий:

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

Следовательно, замаскированное состояние может быть вызвано неправильным определением службы.Следовательно, пользователь может вызвать состояние без маски, неправильно отредактировав сервис.

Замечание: Я не уверен, происходит ли это специально или это простая ошибка (опция по умолчанию), но это может быть интересной информацией для обмена

"маска" - это состояние единичных файлов, которое рассматривается как "третий уровень отключения" (остановка-1-й, отключение-2-й, маска-3-й). Службы, помеченные как замаскированные, не могут быть запущены ни вручную (с помощью команды start), ни системами (при загрузке системы). Поэтому будьте осторожны при использовании команды systemctl mask в службе.