Config service

Материал из pNp Wiki
Перейти к: навигация, поиск

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

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

  • Виртуальная машина с двумя сетевыми интерфейсами
  • Установленные пакеты: 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

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

Состояние сервиса может быть определено командой 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 Не может быть запущен во время загрузки, но может быть загружен юнитом автоматически

Манипуляции unit файлами

  • Просматриваем загруженые юнитов, имеющие тип .service
[root@vm-02 ~]# systemctl --type=service
UNIT                                                                                LOAD   ACTIVE SUB     DESCRIPTION
auditd.service                                                                      loaded active running Security Auditing Service
avahi-daemon.service                                                                loaded active running Avahi mDNS/DNS-SD Stack
crond.service                                                                       loaded active running Command Scheduler
dbus.service                                                                        loaded active running D-Bus System Message Bus
firewalld.service                                                                   loaded active running firewalld - dynamic firewall daemon
getty@tty1.service                                                                  loaded active running Getty on tty1
gpm.service                                                                         loaded active running Console Mouse manager
iprdump.service                                                                     loaded active running LSB: Start the ipr dump daemon
iprinit.service                                                                     loaded active running LSB: Start the ipr init daemon
iprupdate.service                                                                   loaded active running LSB: Start the iprupdate utility
iscsi.service                                                                       loaded failed failed  Login and scanning of iSCSI devices
iscsid.service                                                                      loaded active running Open-iSCSI
iscsiuio.service                                                                    loaded active running iSCSI UserSpace I/O driver
kdump.service                                                                       loaded failed failed  Crash recovery kernel arming
kmod-static-nodes.service                                                           loaded active exited  Create list of required static device nodes for the current kernel
lvm2-lvmetad.service                                                                loaded active running LVM2 metadata daemon
lvm2-monitor.service                                                                loaded active exited  Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling
lvm2-pvscan@252:2.service                                                           loaded active exited  LVM2 PV scan on device 252:2
network.service                                                                     loaded active exited  LSB: Bring up/down networking
NetworkManager.service                                                              loaded active running Network Manager
polkit.service                                                                      loaded active running Authorization Manager
postfix.service                                                                     loaded active running Postfix Mail Transport Agent
rhel-dmesg.service                                                                  loaded active exited  Dump dmesg to /var/log/dmesg
rhel-import-state.service                                                           loaded active exited  Import network configuration from initramfs
rhel-readonly.service                                                               loaded active exited  Configure read-only root support
rhnsd.service                                                                       loaded failed failed  LSB: Starts the Spacewalk Daemon
rhsmcertd.service                                                                   loaded active running Enable periodic update of entitlement certificates.
rsyslog.service                                                                     loaded active running System Logging Service
sshd.service                                                                        loaded active running OpenSSH server daemon
sysstat.service                                                                     loaded active exited  Resets System Activity Logs
systemd-fsck-root.service                                                           loaded active exited  File System Check on Root Device
systemd-fsck@dev-disk-by\x2...0fe05\x2daa22\x2d42d6\x2da18e\x2d39d1eb5ad338.service loaded active exited  File System Check on /dev/disk/by-uuid/cc10fe05-aa22-42d6-a18e-39d1eb5ad338
systemd-journald.service                                                            loaded active running Journal Service
systemd-logind.service                                                              loaded active running Login Service
systemd-random-seed.service                                                         loaded active exited  Load/Save Random Seed
systemd-remount-fs.service                                                          loaded active exited  Remount Root and Kernel File Systems
systemd-sysctl.service                                                              loaded active exited  Apply Kernel Variables
systemd-tmpfiles-setup-dev.service                                                  loaded active exited  Create static device nodes in /dev
systemd-tmpfiles-setup.service                                                      loaded active exited  Create Volatile Files and Directories
systemd-udev-trigger.service                                                        loaded active exited  udev Coldplug all Devices
systemd-udevd.service                                                               loaded active running udev Kernel Device Manager
systemd-update-utmp.service                                                         loaded active exited  Update UTMP about System Reboot/Shutdown
systemd-user-sessions.service                                                       loaded active exited  Permit User Sessions
systemd-vconsole-setup.service                                                      loaded active exited  Setup Virtual Console
tuned.service                                                                       loaded active running Dynamic System Tuning Daemon

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

45 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
[root@vm-02 ~]#
  • Просмотр загруженных активных юнитов:
[root@vm-02 ~]# systemctl list-unit-files --type=service
UNIT FILE                                   STATE   
auditd.service                              enabled 
autovt@.service                             disabled
avahi-daemon.service                        enabled 
blk-availability.service                    disabled
brandbot.service                            static  
console-getty.service                       disabled
console-shell.service                       disabled
cpupower.service                            disabled
crond.service                               enabled 
dbus-org.fedoraproject.FirewallD1.service   enabled 
dbus-org.freedesktop.Avahi.service          enabled 
dbus-org.freedesktop.hostname1.service      static  
....
  • Узнаем, работает ли сервис:
[root@vm-02 ~]# systemctl is-active crond.service
active
[root@vm-02 ~]#
  • Узнаем, включен ли сервис в автозагрузку:
[root@vm-02 ~]# systemctl is-enabled crond.service
enabled
[root@vm-02 ~]#
  • Останавливаем сервис
[root@vm-02 ~]# systemctl stop crond.service
[root@vm-02 ~]# systemctl is-active crond.service
inactive
[root@vm-02 ~]#
  • Запускаем сервис
[root@vm-02 ~]# systemctl start crond.service
[root@vm-02 ~]# systemctl is-active crond.service
active
[root@vm-02 ~]#
  • Перезапускаем сервис
[root@vm-02 ~]# systemctl restart crond.service
[root@vm-02 ~]# systemctl status -l crond.service
crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled)
   Active: active (running) since Thu 2018-02-15 03:18:57 MSK; 6s ago
 Main PID: 9023 (crond)
   CGroup: /system.slice/crond.service
           └─9023 /usr/sbin/crond -n

Feb 15 03:18:57 vm-02 systemd[1]: Starting Command Scheduler...
Feb 15 03:18:57 vm-02 systemd[1]: Started Command Scheduler.
Feb 15 03:18:57 vm-02 crond[9023]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 90% if used.)
Feb 15 03:18:57 vm-02 crond[9023]: (CRON) INFO (running with inotify support)
Feb 15 03:18:57 vm-02 crond[9023]: (CRON) INFO (@reboot jobs will be run at computer's startup.)
[root@vm-02 ~]#
  • Перечитываем конфигурационный файл сервиса
[root@vm-02 ~]# systemctl reload sshd.service
[root@vm-02 ~]# systemctl -l status sshd.service
sshd.service - OpenSSH server daemon
   Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
   Active: active (running) since Mon 2018-02-12 12:37:16 MSK; 2 days ago
  Process: 9038 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
  Process: 1190 ExecStartPre=/usr/sbin/sshd-keygen (code=exited, status=0/SUCCESS)
 Main PID: 1194 (sshd)
   CGroup: /system.slice/sshd.service
           └─1194 /usr/sbin/sshd -D

Feb 15 03:20:12 vm-02 systemd[1]: Reloading OpenSSH server daemon.
Feb 15 03:20:12 vm-02 sshd[1194]: Received SIGHUP; restarting.
Feb 15 03:20:12 vm-02 systemd[1]: Reloaded OpenSSH server daemon.
Feb 15 03:20:12 vm-02 sshd[1194]: Server listening on 0.0.0.0 port 22.
Feb 15 03:20:12 vm-02 sshd[1194]: Server listening on :: port 22.
Feb 15 03:20:59 vm-02 systemd[1]: Reloading OpenSSH server daemon.
Feb 15 03:20:59 vm-02 sshd[1194]: Received SIGHUP; restarting.
Feb 15 03:20:59 vm-02 sshd[1194]: Server listening on 0.0.0.0 port 22.
Feb 15 03:20:59 vm-02 sshd[1194]: Server listening on :: port 22.
Feb 15 03:20:59 vm-02 systemd[1]: Reloaded OpenSSH server daemon.
[root@vm-02 ~]#

Ссылки

Managing Services With Systemd
Understanding Systemd Units and Unit Files