Второе состояние меняют enable и disable. Здесь видно, где systemd хранит список служб для загрузки.
При загрузке systemd доводит систему до цели multi-user.target — обычного рабочего состояния сервера — и запускает всё, что к ней подключено. Подключённые службы — это символические ссылки в каталоге multi-user.target.wants:
enable создаёт там ссылку на файл юнита, disable её удаляет, — об этом они и пишут: Created symlink … или Removed …. Строки Synchronizing state … SysV перед этим — служебные: Ubuntu заодно обновляет старые сценарии запуска. Ключ --now добавляет к enable запуск, а к disable — остановку; без него обе команды меняют только автозапуск.
У части юнитов is-enabled печатает static: в их файле не сказано, к какой цели подключаться, и запускает их другой юнит или сам systemd. Так устроен, например, systemd-journald — включать такие юниты не нужно.
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— остановку.