Создание и управление unit файлами systemd

Unit файлы systemd управляют службами и другими системными объектами в Linux. Они описывают, как и когда должны запускаться сервисы, их зависимости и настройки. В этом руководстве мы рассмотрим процесс создания, редактирования и управления unit файлами systemd в операционной системе НАЙС ОС.

Основные понятия unit файлов

Unit файлы systemd представляют собой конфигурационные файлы с расширением .service, .socket, .target и другими. Эти файлы хранятся в следующих каталогах:

  • /etc/systemd/system/ — для пользовательских unit файлов.
  • /lib/systemd/system/ — для системных unit файлов.
  • /run/systemd/system/ — для временных unit файлов, создаваемых во время выполнения.

Структура unit файла

Unit файлы systemd состоят из нескольких секций, каждая из которых имеет свой набор параметров:

  • [Unit] — общие параметры unit файла, такие как описание и зависимости.
  • [Service] — параметры, специфичные для служб, такие как команды запуска и перезапуска.
  • [Install] — параметры, определяющие, как и когда unit файл должен быть активирован.

Пример unit файла службы

Создадим простой unit файл для пользовательской службы.

Шаг 1: Создание unit файла

sudo nano /etc/systemd/system/my_custom.service

Добавьте следующий контент:

[Unit]
Description=My Custom Service
After=network.target

[Service]
ExecStart=/usr/bin/my_custom_script.sh
Restart=on-failure
User=nobody

[Install]
WantedBy=multi-user.target

Объяснение параметров

  • Description — краткое описание службы.
  • After — указывает зависимости, которые должны быть запущены перед этой службой.
  • ExecStart — команда для запуска службы.
  • Restart — условие перезапуска службы.
  • User — пользователь, от имени которого будет запущена служба.
  • WantedBy — указывает на цели (targets), с которыми связан unit файл.

Управление unit файлами

После создания или изменения unit файла необходимо перезагрузить конфигурацию systemd и управлять службами с помощью команд systemctl.

Перезагрузка конфигурации systemd

sudo systemctl daemon-reload

Эта команда перезагружает конфигурацию systemd, чтобы учесть новые или измененные unit файлы.

Запуск и остановка службы

sudo systemctl start my_custom.service

Эта команда запускает службу my_custom.service.

sudo systemctl stop my_custom.service

Эта команда останавливает службу my_custom.service.

Перезапуск и перезагрузка службы

sudo systemctl restart my_custom.service

Эта команда перезапускает службу my_custom.service.

sudo systemctl reload my_custom.service

Эта команда перезагружает конфигурацию службы my_custom.service без её остановки.

Включение и отключение службы

sudo systemctl enable my_custom.service

Эта команда включает службу my_custom.service, чтобы она автоматически запускалась при загрузке системы.

sudo systemctl disable my_custom.service

Эта команда отключает службу my_custom.service, чтобы она не запускалась при загрузке системы.

Проверка состояния службы

sudo systemctl status my_custom.service

Эта команда отображает текущее состояние службы my_custom.service, включая её статус, журналы и последние действия.

Примеры других типов unit файлов

Socket unit

Socket units управляют сокетами и могут активировать службы при подключении к сокету.

Пример socket unit

sudo nano /etc/systemd/system/my_custom.socket

Добавьте следующий контент:

[Unit]
Description=My Custom Socket

[Socket]
ListenStream=12345

[Install]
WantedBy=sockets.target

Timer unit

Timer units запускают службы по расписанию.

Пример timer unit

sudo nano /etc/systemd/system/my_custom.timer

Добавьте следующий контент:

[Unit]
Description=My Custom Timer

[Timer]
OnBootSec=10min
OnUnitActiveSec=1h

[Install]
WantedBy=timers.target

Просмотр и отладка unit файлов

Для просмотра и отладки unit файлов используйте команды systemctl и journalctl.

Проверка синтаксиса unit файла

sudo systemd-analyze verify /etc/systemd/system/my_custom.service

Эта команда проверяет синтаксис unit файла и выявляет ошибки.

Просмотр журналов службы

sudo journalctl -u my_custom.service

Эта команда отображает журналы для службы my_custom.service, что помогает в отладке и анализе её работы.

Создание и управление unit файлами systemd в НАЙС ОС предоставляет мощные и гибкие средства для управления системными службами и процессами. Использование команд systemctl и journalctl, а также создание и настройка unit файлов позволяет эффективно управлять состоянием системы и обеспечивать её стабильную работу. Следование этим шагам и рекомендациям поможет вам освоить основные принципы работы с unit файлами systemd и использовать их возможности на полную.