Linux Labs

Пакеты, службы, журналы / Ступень 5 из 13

Службы systemd: состояние и автозапуск

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 4 из 6 · на машине · 5 мин

Включить автозапуск

Второе состояние меняют enable и disable. Здесь видно, где systemd хранит список служб для загрузки.

bash
sudo systemctl enable cron          # включить автозапуск
sudo systemctl disable cron         # выключить автозапуск
sudo systemctl enable --now cron    # включить автозапуск и запустить
sudo systemctl disable --now cron   # выключить автозапуск и остановить

При загрузке systemd доводит систему до цели multi-user.target — обычного рабочего состояния сервера — и запускает всё, что к ней подключено. Подключённые службы — это символические ссылки в каталоге multi-user.target.wants:

bash
ls /etc/systemd/system/multi-user.target.wants/

enable создаёт там ссылку на файл юнита, disable её удаляет, — об этом они и пишут: Created symlink … или Removed …. Строки Synchronizing state … SysV перед этим — служебные: Ubuntu заодно обновляет старые сценарии запуска. Ключ --now добавляет к enable запуск, а к disable — остановку; без него обе команды меняют только автозапуск.

У части юнитов is-enabled печатает static: в их файле не сказано, к какой цели подключаться, и запускает их другой юнит или сам systemd. Так устроен, например, systemd-journald — включать такие юниты не нужно.

Проверь себя 1 вопрос

cron остановлен, автозапуск выключен. Ты выполнил sudo systemctl enable cron. Что напечатает systemctl is-active cron?

  • enabled печатает is-enabled. is-active сообщает о работе сейчас, а cron по-прежнему остановлен.

  • enable без --now только создаёт ссылку для загрузки. Работать cron начнёт после start или следующей загрузки.

  • failed — след сбоя. cron никто не запускал, он просто остановлен.

enable создал ссылку в multi-user.target.wants, а запускать cron не стал. Работать cron начнёт после sudo systemctl start cron или при следующей загрузке.

Главное в шаге

  • enable кладёт ссылку на юнит в multi-user.target.wants, disable её убирает — по этим ссылкам systemd запускает службы при загрузке.
  • --now добавляет к enable запуск, а к disable — остановку.
Ubuntu 24.04
Загрузка…