Учебники

Запуск и остановка системных сервисов

systemd — это новый способ запуска сервисов в Linux. systemd имеет превосходный sysvinit . systemd ускоряет загрузку Linux и теперь является стандартным способом управления службами Linux. Несмотря на стабильность, systemd все еще развивается.

systemd как система инициализации, используется для управления как службами, так и демонами, которым необходимо изменить состояние после загрузки ядра Linux. При изменении состояния применяется запуск, остановка, перезагрузка и настройка состояния сервиса.

Сначала давайте проверим версию systemd, которая в данный момент работает на нашем сервере.

[centos@localhost ~]$ systemctl --version 
systemd 219 
+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP 
+GCRYPT +GNUTLS +ACL     +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN

[centos@localhost ~]$

Начиная с версии 7 CentOS, полностью обновленной на момент написания этой статьи systemd версия 219 является текущей стабильной версией.

Мы также можем проанализировать время последней загрузки сервера с помощью systemd-analysis

[centos@localhost ~]$ systemd-analyze    
Startup finished in 1.580s (kernel) + 908ms (initrd) + 53.225s (userspace) = 55.713s 
[centos@localhost ~]$

Когда время загрузки системы медленнее, мы можем использовать команду systemd-analysis blame .

[centos@localhost ~]$ systemd-analyze blame 
   40.882s kdump.service 
   5.775s NetworkManager-wait-online.service 
   4.701s plymouth-quit-wait.service 
   3.586s postfix.service 
   3.121s systemd-udev-settle.service 
   2.649s tuned.service 
   1.848s libvirtd.service 
   1.437s network.service 
   875ms packagekit.service 
   855ms gdm.service 
   514ms firewalld.service 
   438ms rsyslog.service
   436ms udisks2.service 
   398ms sshd.service 
   360ms boot.mount 
   336ms polkit.service 
   321ms accounts-daemon.service

При работе с systemd важно понимать концепцию модулей . Единицы — это ресурсы, которые systemd знает, как интерпретировать. Единицы подразделяются на 12 типов следующим образом:

  • .оказание услуг
  • .разъем
  • .device
  • .mount
  • .automount
  • .своп
  • .TARGET
  • .дорожка
  • .timer
  • .snapshot
  • .ломтик
  • .объем

По большей части мы будем работать с .service в качестве целевых объектов. Рекомендуется провести дальнейшие исследования по другим типам. Как только единицы .service будут применяться для запуска и остановки системных сервисов.

Каждая единица определяется в файле, расположенном в —

  • / lib / systemd / system — файлы базовых модулей

  • / etc / systemd / system — измененные файлы модулей запускаются во время выполнения

/ lib / systemd / system — файлы базовых модулей

/ etc / systemd / system — измененные файлы модулей запускаются во время выполнения

Управление сервисами с помощью systemctl

Для работы с systemd нам нужно очень хорошо ознакомиться с командой systemctl . Ниже приведены наиболее распространенные ключи командной строки для systemctl .

переключатель действие
-t Разделенные запятыми значения типов единиц, таких как service или socket
-a Показывает все загруженные единицы
—государство Показывает все юниты в определенном состоянии: загрузка, суб, активная, неактивная и т. Д.
-ЧАС Выполняет операцию удаленно. Укажите имя хоста или хост и пользователя через @.

Основное использование systemctl

systemctl [operation]
example: systemctl --state [servicename.service]

Для быстрого ознакомления со всеми сервисами, работающими на нашей коробке.

[root@localhost rdc]# systemctl -t service 
UNIT                       LOAD     ACTIVE      SUB     DESCRIPTION

abrt-ccpp.service          loaded   active   exited     Install ABRT coredump   hook 
abrt-oops.service          loaded   active   running    ABRT kernel log watcher 
abrt-xorg.service          loaded   active   running    ABRT Xorg log watcher 
abrtd.service              loaded   active   running    ABRT Automated Bug  Reporting Tool 
accounts-daemon.service    loaded   active   running    Accounts Service 
alsa-state.service         loaded   active   running    Manage Sound Card State (restore and store) 
atd.service                loaded   active   running    Job spooling tools 
auditd.service             loaded   active   running    Security Auditing Service 
avahi-daemon.service       loaded   active   running    Avahi mDNS/DNS-SD Stack 
blk-availability.service   loaded   active   exited     Availability of block devices 
bluetooth.service          loaded   active   running    Bluetooth service 
chronyd.service            loaded   active   running    NTP client/server

Остановка службы

Давайте сначала остановим службу bluetooth.

[root@localhost]# systemctl stop bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth      
bluetooth.service   loaded    inactive dead    Bluetooth service

[root@localhost]#

Как мы видим, служба bluetooth теперь неактивна.

Чтобы снова запустить службу Bluetooth.

[root@localhost]# systemctl start bluetooth

[root@localhost]# systemctl --all -t service | grep bluetooth 
bluetooth.service  loaded    active   running Bluetooth     service

[root@localhost]#

Примечание. Мы не указали bluetooth.service, поскольку подразумевается .service . Рекомендуется думать о типе устройства, добавляющем сервис, с которым мы имеем дело. Итак, с этого момента мы будем использовать расширение .service, чтобы уточнить, что мы работаем над операциями подразделения обслуживания.

Основные действия, которые могут быть выполнены с сервисом:

Начните Запускает сервис
Стоп Останавливает службу
перезагружать Перезагрузка активной конфигурации службы без остановки (например, kill -HUP в system v init)
Запустить снова Запускает, затем останавливает службу
включить Запускает сервис во время загрузки
запрещать Останавливает автоматический запуск службы во время выполнения

Вышеуказанные действия в основном используются в следующих сценариях —

Начните Чтобы вызвать сервис, который был переведен в остановленное состояние.
Стоп Временно отключить службу (например, когда необходимо остановить службу для доступа к файлам, заблокированным службой, как при обновлении службы)
перезагружать Когда файл конфигурации был отредактирован, и мы хотим применить новые изменения, не останавливая службу.
Запустить снова В том же сценарии, что и перезагрузка, но служба не поддерживает перезагрузку .
включить Когда мы хотим, чтобы отключенный сервис запускался во время загрузки.
запрещать Используется в основном, когда необходимо остановить службу, но она запускается при загрузке.

Чтобы проверить статус услуги —

[root@localhost]# systemctl status network.service 
network.service - LSB: Bring up/down networking 
Loaded: loaded (/etc/rc.d/init.d/network; bad; vendor preset: disabled) 
Active: active (exited) since Sat 2017-01-14 04:43:48 EST; 1min 31s ago 
Docs: man:systemd-sysv-generator(8)

Process: 923 ExecStart = /etc/rc.d/init.d/network start (code=exited, status = 0/SUCCESS)

localhost.localdomain systemd[1]: Starting LSB: Bring up/down networking... 
localhost.localdomain network[923]: Bringing up loopback interface:  [  OK  ] 
localhost.localdomain systemd[1]: Started LSB: Bring up/down networking.

[root@localhost]#

Покажите нам текущее состояние сетевого сервиса. Если мы хотим увидеть все сервисы, связанные с сетью, мы можем использовать —

[root@localhost]# systemctl --all -t service | grep -i network 
network.service                       loaded    active    exited    LSB: Bring up/ 
NetworkManager-wait-online.service    loaded    active    exited    Network Manager  
NetworkManager.service                loaded    active    running   Network Manager 
ntpd.service                          loaded    inactive  dead      Network Time  
rhel-import-state.service             loaded    active    exited    Import network      

[root@localhost]#

Для тех, кто знаком с методом управления службами sysinit , важно перейти на systemd . systemd — это новый способ запуска и остановки сервисов демонов в Linux.