mail@vecdev.ru

Шпаргалка по управлению сервисами CentOS 7 с помощью systemd

Иконка systemd

systemd

SysV init

Кстати, именно это является главной причиной ненависти некоторых людей к systemd - нарушения принципа "unix-way".

Примечание: unix-way - принцип, согласно которому, одна программа - одна функция. Т.е. каждая программа должна выполнять одну функцию, но делать это достаточно хорошо, а не иметь 100500 плохо написанных функций.

В этой статье мы рассмотрим основы управления сервисами в systemd для пользователя CentOS 7 версии.

Вводная часть

systemd

Подсистема оперирует специально оформленными файлами конфигурации — модулями (англ. unit). Файлы модулей располагаются в одной из следующий директорий (в порядке приоритета):

  • /etc/systemd/system/
  • /run/systemd/system/
  • /usr/lib/systemd/system/

Каждый модуль отвечает за отдельно взятую службу, точку монтирования, подключаемое устройство, файл подкачки, виртуальную машину и тому подобные ресурсы. Существуют специальные типы модулей, которые не несут функциональной нагрузки, но позволяют задействовать дополнительные возможности systemd, к ним относятся модули типа target, slice, automount и ряд других.

На сегодняшний день systemd поддерживает следующие типы модулей:

  • .target
  • .service
  • .mount
  • .automount
  • .swap
  • .timer
  • .socket
  • .slice
  • .device
  • .path

Примечение: cgroups - это способ объединения процессов, чтобы установить для них какие-то правила или ограничения. Например, ограничения на процессор или память.

Основные функции systemd

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

Среди таких функций:

  • сокет-активация служб (заменяет inetd);
  • запуск сервисов по расписанию (заменяет cron);
  • работа с аппаратным сторожевым таймером (заменяет watchdog);
  • смена корня (заменяет chroot);
  • автомонтирование томов и сетевых ресурсов (заменяет mount и fstab);
  • journalctl — служба журналирования;
  • systemd-analyze — анализ скорости запуска служб;
  • systemd-boot — UEFI загрузчик (замена grub).

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

/etc/rc.d/init.d/

systemctlservicechkconfig

systemctl

Ниже представлены основные команды systemctl:

  • systemctl start name.service
  • systemctl stop name.service
  • systemctl restart name.service
  • systemctl try-restart name.service
  • systemctl reload name.service
  • systemctl status name.service
  • systemctl is-active name.service
  • systemctl list-units --type service --all
  • systemctl enable name.service
  • systemctl disable name.service
  • systemctl reenable name.service
  • systemctl is–enabled name.service
  • systemctl list-unit-files --type service
  • systemctl mask name.service
  • systemctl unmask name.service

Управление systemd на удаленной машине

systemd

systemctl --host user_name@host_name command

где user_name – имя пользователя, host_name – имя хоста, которым осуществляется удаленное управление, а command – выполняемая команда systemd.

Типичный systemd .service

man systemd.service

[Unit]
Description=Daemon to detect crashing apps
After=syslog.target

[Service]
ExecStart=/usr/sbin/abrtd
Type=forking

[Install]
WantedBy=multi-user.target

[Unit]

Здесь содержится общая информация о сервисе. Такая секция есть не только в сервис-модулях, но и в других юнитах (например, при управлении устройствами, точками монтирования и т.д.). В нашем примере мы даем описание сервиса и указываем на то, что демон должен быть запущен после Syslog.

[Service]

ExecStartType

[Install]multi–user.target

/etc/systemd/system/имя_сервиса.service

Затем, выполните команду

systemctl daemon-reload

Systemd просканирует каталоги, загрузит изменения конфигурации существующих сервисов и обнаружит все новые сервисы, после чего вы сможете его запустить одной из основных команд.

Разбираемся с зависимостями требования/порядка

sshd.service

Можно просто открыть файл в текстовом редакторе или использовать утилиту cat, но гораздо удобнее сделать это средствами самого systemd:

systemctl cat sshd.service
Содержимое модуля sshd.service

[Unit]Description

After=Before=

Wants=Requires=

Wants=Requires=

В случае с сервисом sshd, будет предпринята попытка запуска зависимого модуля sshd-keygen, но исход запуска проверен не будет.

Важно!

sshd.servicenetwork.targetnetwork.target

[Service]

ExecStart=

ExecReload=

KillMode=

Restart=

Коды выхода и из влияние на директиву Restart

[Install]systemctl enable/disable

Конкретно в этом случае, при выполнении команды

systemctl enable sshd.service

multi-user.targetsshd.service

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

/usr/lib/systemd/system/run/systemd/system

systemctl mask unit_name

/dev/null/etc/systemd/system/etc/systemd/system

Обратная команда

systemctl unmask unit_name

просто удаляет симлинк.

Заключение

В этой статье мы научились управлять сервисами CentOS 7.

Конечно, это далеко не единственная функция systemd и другие ее стороны будут рассмотрены в будущем. Попробуйте systemd прямо сейчас. Эти знания будут полезны в связи с переходом многих дистрибутивов на systemd.

Успешного использования CentOS 7!


Наши соцсети

Подписывайтесь на наши соцсети, там еще больше информации и контента. На YouTube канале вы найдете видео уроки по созданию сайтов на Битрикс и другие полезные "фишки".

Поделиться статьей
Частный разработчик сайтов Vector Dev
Комментарии
Загрузить файл или картинкуПеретащить с помощью Drag'n'drop
Перетащите файлы
Ничего не найдено
Защита от автоматических сообщений