Если служба есть enabled
, то где-то есть символическая ссылка
/etc/systemd/system
в файл модуля, чаще всего где-то в
/lib/systemd/system
Полезно, что когда вы enable
работаете с сервисом, полные пути созданной ссылки и цели будут напечатаны на стандартный вывод.
Отключение службы удаляет символическую ссылку, поэтому на файл модуля это не влияет, но служба не загружается при следующей загрузке при чтении systemd /etc/systemd/system
.
Однако отключенная служба может быть загружена и будет запущена, если запущена зависящая от нее служба ; enable
и disable
только настраивать поведение автозапуска для блоков, и состояние легко переопределяется.
Маскируется обслуживание один блок которого файл является символической ссылкой /dev/null
. Это делает «невозможным» загрузку службы, даже если это требуется другой, включенной службой.
Когда вы mask
работаете с сервисом, создается символическая ссылка из /etc/systemd/system
в /dev/null
, оставляя исходный файл модуля в другом месте без изменений. Когда вы unmask
сервис, символическая ссылка удаляется.
Однако я заметил, что эти команды не всегда соблюдаются.
Когда я пытаюсь замаскировать большинство служб, происходит сбой:
$ sudo systemctl mask bluetooth.service
Failed to execute operation: Invalid argument
Конечно, я остановил службу первым. @Anwar предполагает, что маскирование возможно только для некритических сервисов.
Разоблачение маскированной службы, если только я не маскировал ее, также не выполняется (молча). Я полагаю, что это потому, что нигде нет файла модуля для службы, кроме как в виде символической ссылки /dev/null
, на этот раз в /lib/systemd/system
:
$ file $(locate fuse.service)
/lib/systemd/system/fuse.service: symbolic link to /dev/null
$ sudo systemctl unmask fuse.service
$ systemctl status fuse
● fuse.service
Loaded: masked (/dev/null; bad)
Active: inactive (dead)
У меня не одна такая проблема
Чтобы фактически снять маску с службы x11-common, мне пришлось удалить символическую ссылку на /dev/null
и sudo apt-get install --reinstall x11-common && sudo systemctl daemon-reload
. Теперь, когда я запрашиваю его, systemctl status x11-common
я вижу, что сервис имеет красивый зеленый кружок и загружен и активен (выход), хотя у него нет файла модуля.
Для дальнейшей ссылки эта статья о том, как использовать Systemctl, может оказаться полезной .