В чем разница между «systemctl mask» и «systemctl disable»?

10

Я хочу улучшить время загрузки своего Ubuntu GNOME 16.04, отключив службы plymouth при загрузке. Я нашел два ответа о том, как это сделать на разных сайтах, а именно:

# systemctl disable plymouth-quit-wait.service 
# systemctl mask plymouth-quit-wait.service 

Я не могу выполнить ни одно из указанных выше, если не знаю, что они делают.

    
задан pearlstar 24.08.2016 в 15:08
источник

3 ответа

18

Если услуга enabled , тогда есть символическая ссылка где-то в

/etc/systemd/system

в единичный файл, чаще всего где-то в

/lib/systemd/system

Полезно, когда вы enable сервиса, полные пути созданной ссылки и цели будут напечатаны на stdout.

Отключить служба удаляет символическую ссылку, поэтому сам файл блока не затрагивается, но служба не загружается при следующей загрузке, когда systemd читает /etc/systemd/system .

Однако отключенная служба может загружаться и будет запущена если запущена служба, зависящая от нее ; enable и disable настраивают поведение автозапуска только для единиц, а состояние легко переопределяется.

A скрытый сервис - это тот, чей единичный файл является символической ссылкой на /dev/null . Это делает невозможным загрузку службы, даже если это требуется другой, включенной службе.

Когда вы используете mask службы, символическая ссылка создается из /etc/systemd/system в /dev/null , оставляя исходный файл устройства в другом месте нетронутым. Когда вы unmask службы, символическая ссылка удаляется.

Однако я заметил, что эти команды не всегда соблюдаются.

Когда я пытаюсь замаскировать большинство служб, это не удается:

$ sudo systemctl mask bluetooth.service
Failed to execute operation: Invalid argument

Конечно, я сначала остановил службу. @Anwar предполагает, что маскировка возможна только для некритических сервисов.

Размаскивание маскированной службы, если я сам ее не замаскировал, также терпит неудачу (молча). I верьте , это потому, что нет ни одного файла единицы для службы в любом месте, кроме как в виде символической ссылки на /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 может быть полезным.

    
ответ дан Zanna 24.08.2016 в 19:05
источник
6

Короче говоря,

  • disable отключает устройство во время загрузки. Но это устройство можно запустить в любое время после загрузки.

  • mask полностью отключает устройство. Он не может быть запущен без разоблачения. Это автоматически подразумевает, что он не будет работать во время загрузки.

ответ дан Anwar 24.08.2016 в 19:34
4

Это довольно просто.

  • systemctl start , systemctl stop : запускает (останавливает) рассматриваемый блок немедленно ;
  • systemctl enable , systemctl disable : отметит (удаляет отметки) устройство для автозапуска при загрузке (в соответствии с конкретным блоком, описанным в разделе [Install] );
  • systemctl mask , systemctl unmask : запрещает (разрешает) все и любые попытки запустить рассматриваемое устройство (либо вручную, либо как зависимость любого другого устройства, включая зависимости от начальной загрузки). Обратите внимание, что маркировка для автозапуска в systemd реализуется путем добавления искусственной зависимости от целевой загрузки по умолчанию к рассматриваемому устройству, поэтому «маска» также запрещает автозапуск.

Ref .: systemctl (1) .

Подробнее: Леннарт Поттеринг (2011-03-02). «Три уровня выключения» . systemd для администраторов . 0pointer.de.     

ответ дан intelfx 25.08.2016 в 03:25