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 ~]#