Config service

Материал из pNp Wiki
Версия от 13:05, 2 марта 2018; Andy (обсуждение | вклад) (Состояние сервисов)

Перейти к: навигация, поиск

Управление сервисами

Предварительные требования

  • Виртуальная машина с двумя сетевыми интерфейсами
  • Установленные пакеты: systemd, bash-completion

Общая информация

В RHEL 7 на смену классическому init'у и стартовым скриптам, а так же запуску демонов посредством xinetd, пришел systemd. Преимущества systemd в сравнении с классической системой инициализации init:

  • Возможность распараллеливания запуска демонов, что ускоряет загрузку системы
  • Запуск демонов по требованию, без необходимости использования стороннего сервиса
  • Автоматическое разрешение зависимостей сервисов, что позволяет предотвратить длительное ожидание в случае, если сервису требуется сеть, а сеть недоступна.
  • Метод слежения за родственными процессами благодаря использованию cgroups

Для управления разными типами системных объектов, называемых юнитами (units), используется утилита systemctl. Полный список системных объектов можно получить следующим образом:

[root@vm-02 ~]# systemctl -t help
Available unit types:
service
socket
target
device
mount
automount
snapshot
timer
swap
path
slice
scope
[root@vm-02 ~]#

Типы юнитов

Тип объекта Описание
service Описывает как управлять сервисом или приложением. Управление включает в себя запуск/остановку сервиса, при каких обстоятельствах сервис должен быть автоматически запущен, а так же информацию о зависимостях и порядке запуска
socket Описывает сетевой или IPC сокет или буфер FIFO который использует systemd для сокет активации. Сокет всегда имеет .service файл, который будет запущен, когда будет обращение к сокету
target Используется для предоставления возможности синхронизации между другими юнитами в момент загрузки или изменения состояния. Объекты этого типа так же могут быть использованы, для приведения системы в новое состояние. Другие юниты определяют их отношение к target'ам , которые привязаны к действиям target'а
device Используется для описания устройства, которое было обозначено как нуждающиеся в управлении systemd сервисом udev или файловой системой sysfs. Не все устройства имеют файлы .device. Такие файлы могут потребоваться для определения порядка следования устройств, их монтирования и доступа к ним.
mount Определяет точку монтирования на файловой системе под управлением systemd. .mount файлы именуются по имени точки монтирования, где слеши /, заменяются на тире -
automount Определяет точку монтирования которая будет смонтирована автоматически. Данный файл должен именоваться так же, как и точка монтирования на которую он ссылается и иметь соответствующий файл .mount в котором указаны опции монтирования
snapshot Создается автоматически командой systemd snapshot. Данная команда позволяет восстановить текущее состояние системы инициализации, после внесения в не еизменений
timer Определяет таймер, который будет находится под управлением systemd. Аналогичен заданию для демона cron.
swap Определяет пространство подкачки в системе. Имя юнита должно отражать устройство или имя файла, который будет использоваться в качестве свопа
path Определяет путь, который будет использован для активации на основе пути. По-умолчанию, будет запущен юнит .service c аналогичным именем, в момент изменения состояния пути. Данная возможность использует inotify для отслеживания изменений пути.
slice Юнит связан с нодами cgroups позволяя ограничивать ресурсы процессам упомянутым в .slice файле. Имя юнита отражает позицию в иерархии внутри дерева cgroups
scope Создаются автоматически systemd исходя из информации полученной через шину интерфейсов. Используются для управления набором внешних системных процессов.

Состояние сервисов

Состояние сервиса может быть определено командой systemctl status name.type. Например:

[root@vm-02 ~]# systemctl status crond.service 
crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
   Active: active (running) since Mon 2018-02-12 12:38:38 MSK; 2 days ago
 Main PID: 1320 (crond)
   CGroup: /system.slice/crond.service
           └─1320 /usr/sbin/crond -n

Feb 12 12:38:38 vm-02 systemd[1]: Started Command Scheduler.
Feb 12 12:38:38 vm-02 crond[1320]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 78% if used.)
Feb 12 12:38:39 vm-02 crond[1320]: (CRON) INFO (running with inotify support)
[root@vm-02 ~]#
Состояние юнита Описание
loaded Конфигурационный файл сервиса был обработан
active (running) Один или несколко процессов сервиса загружены и работают
active (exited) Успешно завершено некое разовое событие
active (waiting) Выполняется, но ждет события
inactive Не выполняется
enabled Будет запущен во время загрузки
disabled Не будет запущен во время загрузки
static Не может быть запущен во время загрузки, но может быть загружен юнитом автоматически