Введение
В этом практическом занятии (лабораторной работе) вы научитесь проверять, заблокирована ли системная служба в Linux с использованием systemd. Блокировка (маскировка) службы препятствует ее запуску, что является ключевым понятием для управления системой и устранения неполадок. Вы будете использовать команду systemctl is-masked для проверки статуса блокировки (маскировки) конкретных служб и команду systemctl list-unit-files для получения более широкого обзора файлов юнитов systemd. В конце вы изучите каталоги конфигурации systemd, чтобы понять, где хранятся эти настройки.
Проверка блокировки службы с помощью systemctl is-masked
На этом этапе мы начнем изучать systemd — систему и менеджер служб в современных дистрибутивах Linux, таких как Ubuntu. systemd отвечает за запуск, остановку и управление службами (например, веб-серверами, базами данных и т.д.) и другими системными ресурсами.
Одним из важных понятий в systemd является "блокировка" (маскировка) службы. Блокировка (маскировка) службы препятствует ее запуску, даже вручную или другими службами. Это способ полностью отключить службу.
Мы можем проверить, заблокирована ли служба, используя команду systemctl is-masked. Давайте проверим статус распространенной службы apache2. Apache — это популярный веб-сервер.
Откройте терминал, если он еще не открыт. Помните, что вы можете найти значок Xfce Terminal слева на рабочем столе.
Введите следующую команду и нажмите Enter:
systemctl is-masked apache2
Вы должны увидеть вывод, похожий на следующий:
inactive
Этот вывод показывает, что служба apache2 не заблокирована (не маскирована). Если бы она была заблокирована, вывод был бы masked.
Давайте попробуем проверить службу, которая обычно по умолчанию заблокирована в этой среде, например systemd-udevd-kernel.socket. Это низкоуровневая системная служба.
Введите следующую команду и нажмите Enter:
systemctl is-masked systemd-udevd-kernel.socket
Вывод должен быть следующим:
masked
Это подтверждает, что служба systemd-udevd-kernel.socket действительно заблокирована (маскирована).
Понимание того, заблокирована ли служба, является важным аспектом при устранении неполадок и управлении системой. Если служба не запускается, проверка ее статуса блокировки (маскировки) часто является одним из первых шагов.
Нажмите Продолжить, чтобы перейти к следующему этапу.
Просмотр списка файлов юнитов с помощью systemctl list-unit-files
На предыдущем этапе мы использовали команду systemctl is-masked для проверки статуса отдельных служб. Теперь давайте посмотрим более широко на все файлы юнитов, о которых знает systemd.
systemd управляет различными типами "юнитов" (units), которые представляют собой конфигурационные файлы, определяющие службы, точки монтирования, устройства, сокеты и многое другое. Наиболее распространенным типом является юнит с расширением .service, который определяет, как запускать фоновый процесс (службу).
Команда systemctl list-unit-files отображает список всех установленных файлов юнитов и их состояние "включенности" (enable state). Состояние включенности показывает, настроен ли юнит на автоматический запуск при загрузке системы.
Введите следующую команду в терминале и нажмите Enter:
systemctl list-unit-files
Эта команда выведет длинный список файлов юнитов. Вывод будет выглядеть приблизительно так (показан только небольшой фрагмент):
UNIT FILE STATE
proc-sys-fs-binfmt_misc.automount static
dev-hugepages.mount static
dev-mqueue.mount static
proc-sys-fs-binfmt_misc.mount static
sys-fs-fuse-connections.mount static
sys-kernel-config.mount static
sys-kernel-debug.mount static
sys-kernel-tracing.mount static
...
apache2.service disabled
...
Вывод состоит из двух столбцов:
UNIT FILE: Имя файла юнита (например,apache2.service).STATE: Состояние включенности юнита (например,static,enabled,disabled,masked).
Вот краткое объяснение некоторых общих состояний:
enabled: Юнит настроен на автоматический запуск при загрузке системы.disabled: Юнит не настроен на автоматический запуск при загрузке системы.static: Юнит не может быть включен или выключен; его запуск контролируется другим юнитом.masked: Юнит полностью отключен и не может быть запущен.
Вы можете прокручивать вывод с помощью полосы прокрутки терминала или перенаправить вывод в постраничный просмотрщик, такой как less. Например:
systemctl list-unit-files | less
Внутри less вы можете использовать стрелки для прокрутки, нажать пробел, чтобы перейти на следующую страницу, и нажать q, чтобы выйти.
Эта команда очень полезна для того, чтобы увидеть, какие службы установлены на вашей системе и как они настроены на запуск.
Нажмите Продолжить, чтобы перейти дальше.
Проверка конфигурации systemd в /etc/systemd
На предыдущих этапах мы использовали команду systemctl для взаимодействия с systemd. Теперь давайте посмотрим, где systemd хранит свои конфигурационные файлы.
Основной каталог для конфигурационных файлов systemd - это /etc/systemd. В этом каталоге есть подкаталоги для различных типов файлов юнитов и параметров конфигурации.
Давайте выведем список содержимого каталога /etc/systemd с помощью команды ls. Помните, что /etc - это стандартный каталог в Linux для хранения конфигурационных файлов.
Введите следующую команду в терминале и нажмите Enter:
ls /etc/systemd/
Вы увидите список каталогов и файлов, похожий на следующий:
journald.conf logind.conf networkd.conf resolved.conf system system.conf timesyncd.conf user user.conf
Самым важным подкаталогом здесь является /etc/systemd/system. Именно здесь часто размещаются или создаются ссылки на системные файлы юнитов. Давайте посмотрим, что находится внутри этого каталога.
Перейдите в текущий каталог /etc/systemd/system с помощью команды cd.
cd /etc/systemd/system
Теперь выведите список содержимого этого каталога:
ls
Вы увидите список файлов и каталогов, многие из которых являются символическими ссылками (->), указывающими на реальные файлы юнитов, расположенные в другом месте (чаще всего в /lib/systemd/system). Именно таким образом службы включаются или отключаются - путем создания или удаления этих символических ссылок.
Например, вы можете увидеть что-то вроде этого:
multi-user.target.wants -> /lib/systemd/system/multi-user.target.wants
sockets.target.wants -> /lib/systemd/system/sockets.target.wants
...
Каталоги с суффиксом .wants содержат символические ссылки на службы, которые должны быть запущены при достижении соответствующего целевого состояния (target). Например, multi-user.target.wants содержит ссылки на службы, которые должны запускаться, когда система находится в многопользовательском режиме (например, после загрузки).
Давайте посмотрим, что находится внутри каталога multi-user.target.wants.
ls multi-user.target.wants/
Вы увидите список служб, которые настроены на запуск в многопользовательском режиме.
anacron.service -> ../anacron.service
apache2.service -> ../../apache2.service
...
Это показывает, что apache2.service имеет ссылку здесь, что означает, что она настроена на запуск в многопользовательском режиме.
Изучение каталога /etc/systemd/system помогает понять, как systemd организовывает и управляет службами на вашей системе.
Нажмите Продолжить, чтобы завершить этот практический урок.
Резюме
В этом практическом уроке мы начали изучать systemd в Linux, сосредоточившись на том, как определить, является ли системная служба "заблокированной" (masked). Блокировка службы - это метод полного отключения ее работы, предотвращающий ее запуск в любых обстоятельствах. Мы научились использовать команду systemctl is-masked для проверки статуса блокировки конкретных служб и обнаружили, что служба apache2 не была заблокирована, в то время как systemd-udevd-kernel.socket была заблокирована. Понимание статуса блокировки служб является фундаментальным этапом при устранении проблем с запуском служб.
Затем мы перешли к использованию команды systemctl list-unit-files для получения более широкого представления о всех файлах юнитов, управляемых systemd. Файлы юнитов - это конфигурационные файлы, представляющие различные системные ресурсы и службы. Эта команда предоставляет полный список юнитов и их состояний, давая более широкую картину конфигурации системы, чем проверка отдельных служб.



