Этот урок дает базовый обзор файлов юнитов systemd и того, как управлять ими с помощью systemctl, основного инструмента для управления init-системой. Мы рассмотрим базовую структуру файла юнита и основные команды для управления службами Linux.
Понимание файла юнита Systemd
Файл юнита systemd — это простой текстовый файл, описывающий службу, точку монтирования, устройство или другой ресурс, которым может управлять systemd. Вот базовый пример файла юнита службы с именем foobar.service:
[Unit]
Description=My Foobar Service
After=network.target
[Service]
ExecStart=/usr/bin/foobar
[Install]
WantedBy=multi-user.target
Этот простой файл службы разделен на разделы:
- [Unit]: Этот раздел содержит метаданные и информацию о зависимостях. Директива
Descriptionпредоставляет удобочитаемое имя для юнита. Директивы, такие какAfterиBefore, контролируют порядок запуска, гарантируя, что этот юнит запустится после доступности сети. - [Service]: Этот раздел определяет, как управлять службой. Директива
ExecStartимеет решающее значение, поскольку она указывает команду, которую необходимо выполнить для запуска службы. Другие директивы, такие какExecStopиExecReload, могут определять, как остановить или перезагрузить службу. - [Install]: Этот раздел определяет поведение юнита при его включении или отключении с помощью
systemctl. ДирективаWantedByуказывает systemd запустить эту службу как часть определенной цели, такой какmulti-user.targetдля стандартной неграфической загрузки.
Это лишь краткий обзор файлов юнитов systemd. Для более сложных конфигураций настоятельно рекомендуется дальнейшее изучение этой темы.
Основные команды Systemctl
Теперь давайте рассмотрим основные команды systemctl, которые вы будете использовать для взаимодействия с юнитами systemd и управления службами Linux.
Вывод юнитов Systemd
Чтобы увидеть все активные юниты, которыми в данный момент управляет systemd, используйте команду list-units.
systemctl list-units
Проверка состояния юнита
Чтобы просмотреть подробное состояние определенного юнита, включая то, активен ли он, включен ли он, и его последние записи журнала, используйте команду status.
systemctl status networking.service
Управление состояниями служб
You can control the runtime state of a service using start, stop, and restart.
Вы можете управлять рабочим состоянием службы с помощью команд start, stop и restart.
Чтобы немедленно запустить службу:
sudo systemctl start networking.service
Чтобы остановить запущенную службу:
sudo systemctl stop networking.service
Чтобы остановить, а затем снова запустить службу:
sudo systemctl restart networking.service
Включение и отключение служб
Включение службы создает символическую ссылку, которая связывает ее с процессом загрузки, гарантируя ее автоматический запуск. Отключение удаляет эту ссылку.
Чтобы включить службу для запуска при загрузке:
sudo systemctl enable networking.service
Чтобы отключить службу от запуска при загрузке:
sudo systemctl disable networking.service
Эти команды являются строительными блоками для управления службами в современных системах Linux. Освоение их — ключевой шаг в вашем путешествии по Linux.