Где хранятся службы linux

Примеры управления службами в Linux с помощью systemctl

Все основные дистрибутивы Linux, такие как Ubuntu, Fedora и т.д., сегодня используют систему systemd init для управления и контроля различных сервисов во время работы системы. Для управления сервисами(демонами) systemd правильнее использовать утилиту systemctl.

Концепция управления сервисами

Systemd – это система init и менеджер сервисов современных Linux-систем. Система init – это первый процесс, который запускается при включении системы и продолжает работать до ее выключения.

Основная цель systemd как системы init – инициализация различных компонентов системы сразу после загрузки ядра Linux. Кроме того, когда система запущена, она также управляет различными службами и демонами, такими как демон ssh, сетевой менеджер и т.д.

Systemd работает на основе файлов блоков. Существуют различные типы юнит-файлов в зависимости от их назначения и ресурсов. Например, службы имеют файлы с расширениями .service , а файлы устройств имеют расширения .device . Для управления файлами блоков используется команда systemctl.

Важные файлы единиц и их описание

Название Расширение Описание
Service unit .service Системная служба
Target unit .target Группа systemd.
Automount unit .automount Точка автоматического монтирования файловой системы.
Device unit .device Файл устройства, распознаваемый ядром.
Mount unit .mount Точка монтирования файловой системы.
Path unit .path Файл или каталог в файловой системе.
Scope unit .scope Созданный извне процесс.
Slice unit .slice Группа иерархически организованных единиц, управляющих системными процессами.
Snapshot unit .snapshot Сохраненное состояние менеджера systemd.
Socket unit .socket Сокет межпроцессного взаимодействия.
Swap unit .swap Устройство подкачки или файл подкачки.
Timer unit .timer Таймер systemd.
Читайте также:  What is linux presentation

.

Где хранятся файлы блоков?

В идеальном случае в системе Linux файлы блоков хранятся в двух местах. Файлы, созданные во время выполнения и загрузки, хранятся в /run/systemd/system/ . Файлы блоков, которые вы создаете вручную (например, командой systemctl enable ), хранятся в /etc/systemd/system/ .

Путь к /etc/systemd/system/ имеет приоритет над файлами блоков времени выполнения, находящимися в /run/systemd/system/ .

Есть еще один путь, где systemd хранит системную копию файлов служебных блоков – /lib/systemd/system .

Примеры

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

Сначала рассмотрим, как можно получить список служб, проверить их состояние и т.д. Это необходимо, если вы хотите понять состояние вашей системы в целях исследования.

Чтобы получить список всех активных модулей systemd, вы можете использовать следующую команду.

Эта команда дает большой вывод с нижеприведенными заголовками. Прокрутите с помощью клавиш со стрелками (вверх, вниз, влево и вправо), чтобы просмотреть весь вывод.

  • UNIT – Имя подразделения systemd
  • Load – Отражает, разобрал ли systemd конфигурационный файл устройства и загружен ли он в память
  • ACTIVE – Состояние устройства (высокоуровневый статус).
  • SUB – Состояние устройства (низкоуровневый статус)
  • DESCRIPTION – Описание устройства.

Например, значение ACTIVE может быть активным, а уровень SUB может быть различным, например, запущен, прослушивается, мертв и активен.

systemctl list-units --all --state=inactive

Список служб

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

systemctl list-units --type=service

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

systemctl list-units --type=service --state=running

Другие комбинации значений state , которые вы можете использовать:

  • active
  • inactive
  • running
  • dead
  • exited
  • plugged
  • tentative
  • listening
  • waiting

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

Читайте также:  Посмотреть какие диски подключены linux

Управление файлами устройств – это отдельная тема.

Показать статус службы

Чтобы узнать статус службы, используйте below command. For this guide, Я использовал службу NetworkManager , которая управляет сетевым управлением системы. Вы можете заменить NetworkManager на собственное имя службы. Все следующие команды требуют привилегии sudo. Если вы не знаете имя службы, выполните приведенные выше команды для отображения всех служб, а затем отфильтруйте их с помощью команды grep .

systemctl status NetworkManager.service

Обратите внимание, что вы можете опустить .service в конце имени службы. Systemd достаточно умна, чтобы понять команду!

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

Еще несколько примеров команд:

systemctl is-active NetworkManager.service
systemctl is-enabled NetworkManager.service
systemctl is-failed NetworkManager.service

Запуск службы

Запустить службу systemd очень просто. Выполните приведенную ниже команду, указав start и имя службы. Команда запустит службу.

sudo systemctl start NetworkManager.service

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

Используя параметр stop, вы можете остановить службу. Например:

sudo systemctl stop NetworkManager.service

Будьте осторожны при остановке службы. Убедитесь, что вы знаете, что делаете.

Перезапуск и перезагрузка службы

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

sudo systemctl restart NetworkManager.service
sudo systemctl reload NetworkManager.service

Включение и отключение службы

Если вы создали новую службу или установили приложения, работающие через службы, запуск их с помощью команды start не включит их снова при следующей загрузке. Поэтому, если вы хотите, чтобы systemd запускала службу при загрузке системы, вам нужно использовать команду enable. То же самое верно и для отключения, когда вы хотите отключить службу во время загрузки.

sudo systemctl enable NetworkManager.service

Команда enable создает симлинк из /etc/systemd/system в целевые места.

Читайте также:  Линукс лучшие дистрибутивы 2022

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

sudo systemctl disable NetworkManager.service

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

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Источник

Оцените статью
Adblock
detector