Введение в systemd

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

Основные концепции systemd

systemd управляет службами и процессами с помощью единиц (units), которые определяют конфигурацию и поведение этих служб. Основные типы единиц включают:

  • Service units (.service): управляют службами и демонами.
  • Target units (.target): группируют другие единицы для достижения определенного состояния системы.
  • Socket units (.socket): управляют сокетами, которые активируют службы при подключении.
  • Mount units (.mount): управляют точками монтирования файловых систем.
  • Timer units (.timer): запускают службы по расписанию.

Основные команды systemd

Для управления службами и единицами systemd используются команды systemctl и journalctl. Рассмотрим основные команды и их использование.

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

sudo systemctl start имя_службы

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

sudo systemctl stop имя_службы

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

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

sudo systemctl restart имя_службы

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

sudo systemctl reload имя_службы

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

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

sudo systemctl enable имя_службы

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

sudo systemctl disable имя_службы

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

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

systemctl status имя_службы

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

Список всех служб

systemctl list-units --type=service

Эта команда отображает список всех активных служб в системе.

Работа с журналами systemd

systemd использует журнал journal для ведения логов событий и действий. Команда journalctl позволяет просматривать эти логи.

Просмотр всех журналов

sudo journalctl

Эта команда отображает все журналы событий в системе.

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

sudo journalctl -u имя_службы

Эта команда отображает журналы для указанной службы.

Просмотр журналов за определенный период

sudo journalctl --since "2023-06-01" --until "2023-06-10"

Эта команда отображает журналы за указанный период времени.

Настройка единиц systemd

Файлы единиц systemd обычно хранятся в каталоге /etc/systemd/system/ для пользовательских настроек и /lib/systemd/system/ для системных настроек. Рассмотрим пример создания и настройки файла единицы службы.

Пример файла единицы службы

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

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

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

[Service]
ExecStart=/usr/bin/mycommand
Restart=always
User=nobody

[Install]
WantedBy=multi-user.target

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

sudo systemctl daemon-reload

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

Запуск и включение новой службы

sudo systemctl start myservice

Эта команда запускает новую службу myservice.

sudo systemctl enable myservice

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

Использование целей (targets) systemd

Цели (targets) systemd используются для группировки и управления зависимостями между службами. Они заменяют традиционные уровни выполнения (runlevels) в классических системах инициализации.

Просмотр текущего состояния цели

systemctl get-default

Эта команда отображает текущую активную цель системы.

Изменение текущей цели

sudo systemctl isolate multi-user.target

Эта команда переключает систему на цель multi-user.target, аналогичную уровню выполнения 3 (много пользователей, без графического интерфейса).

Установка цели по умолчанию

sudo systemctl set-default graphical.target

Эта команда устанавливает цель graphical.target в качестве цели по умолчанию, что аналогично уровню выполнения 5 (много пользователей с графическим интерфейсом).

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