Linux службы операционной системы

Загрузка системы #

flowchart TB power(«Подача питания») bios[«Загрузка микрокода материнской платы»] hw_init[«Инициализация ключевых компонентов»] loader_search[«Поиск загрузчика»] loader_init[«Передача управления загрузчику»] os_init[«Загрузка ядра ОС»] power —> bios bios —> hw_init —> loader_search —> loader_init —> os_init

Существует несколько стандартов для реализации систем загрузки

  • BIOS, Basic Input Output System
  • UEFI, Unified Extensible Firmware Interface
  • EFI, Extensible Firmware Interface
  • Множество закрытых решений

Загрузчик ОС #

Задачей загрузчика ОС является поиск ядра ОС с дальнейшей передачей ядру управления. Загрузчик может иметь интерактивный интерфейс для выбора вариантов ОС для загрузки

В GNU/Linux для загрузки ОС применяется связка из

  • ядра ОС, являющегося бинарным исполняемым файлом
  • initrd, Initial RAM Disk, образа временной файловой системы, необходимой ядру для дальнейшей загрузки системы

В рамках initrd поставляются:

  • Модули ядра ОС, необходимые для работы с оборудованием на данном компьютере
  • Служебные приложения, нужные для загрузки модулей и настройки системы

Загрузка ОС #

В рамках загрузки ядра ОС происходит поиск всего оборудования и его инициализация

После того как всё оборудование готово к работе, ядро запускает процесс-инициализации init

Существует множество систем инициализации:

Сравнение разных систем предоставляет проект Gentoo

Задачи системы инициализации #

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

  • Подключение файловых систем (обычно да)
  • Настройка сетевых интерфейсов (обычно нет)
  • Запуск задач по расписанию (обычно нет)
  • Журналирование работы служб (обычно нет)
  • Управление входом пользователей в систему (обычно нет)
  • Создание виртуальных файлов для устройств (обычно нет)
  • Управление временем системы (обычно нет)

Стадии загрузки ОС #

При запуске системы обычно рассматриваются следующие стадии

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

Также система инициализации должна выполнять корректное выключение системы, т.е. выключать службы в правильном порядке

Варианты реализации стадий #

SysV Runlevel systemd Target Notes
0 poweroff.target, runlevel0.target Halt the system.
1, s, single rescue.target, runlevel1.target Single user mode.
2, 4 multi-user.target, runlevel2.target, runlevel4.target User-defined/Site-specific runlevels. By default, identical to 3.
3 multi-user.target, runlevel3.target Multi-user, non-graphical. Users can usually login via multiple consoles or via the network.
5 graphical.target, runlevel5.target Multi-user, graphical. Usually has all the services of runlevel 3 plus a graphical login.
6 reboot.target, runlevel6.target Reboot
emergency emergency.target Emergency shell

Службы #

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

  • Приложение реагирует на некоторые сигналы и выполняет некоторые действия
    • Сигнал от ядра ОС о добавлении нового устройства
    • Сигнал по шине взаимодействия, запрос на выполнение операции
    • Сигнал по сетевому интерфейсу, выполнение действия
    • Файловая система с файлами службы уже доступна на момент запуска службы
    • Сетевой интерфейс уже настроен и готов обрабатывать запросы
    • Служба базы данных запущена и готова обрабатывать запросы

    Службы также могут представлять собой действия, выполняющиеся с некоторой регулярностью

    Настройка systemd #

    Для описания всех компонентов systemd используются файлы модулей (unit), в которых описывается поведение конкретного компонента. В настоящий момент systemd поддерживает следующие виды модулей:

    Тип модуля Описание
    Target A group of units that defines a synchronization point. The synchronization point is used at boot time to start the system in a particular state.
    Service A unit of this type starts, stops, restarts or reloads a service daemon such as Apache webserver.
    Timer A unit of this type activates/deactivates specified service based on a timer or when the set time is elapsed.
    Socket A unit of this type activates a service when the service receives incoming traffic on a listening socket.
    Device A unit of this type implements device-based activation such as a device driver.
    Тип модуля Описание
    Mount A unit of this type controls the file-system mount point.
    Automount A unit of this type provides and controls on-demand mounting of file systems.
    Swap A unit of this type encapsulates/activates/deactivates swap partition.
    Path A unit of this type monitors files/directories and activates/deactivates a service if the specified file or directory is accessed.
    Snapshot A unit that creates and saves the current state of all running units. This state can be used to restore the system later.
    Slice A group of units that manages system resources such as CPU, and memory.
    Scope A unit that organizes and manages foreign processes.
    busname A unit that controls DBus system.

    Каталоги конфигурации systemd #

    Список можно посмотреть в man-руководстве systemd.unit

    • Пути для поиска модулей системного уровня
      • /etc/systemd/system.control/*
      • /run/systemd/system.control/*
      • /etc/systemd/system/* — Файлы, созданные администратором
      • /run/systemd/system/*
      • /lib/systemd/system/* — Файлы, установленные вместе с пакетом приложения
      • ~/.config/systemd/user.control/*
      • ~/.config/systemd/user/*
      • $XDG_CONFIG_DIRS/systemd/user/*
      • /etc/systemd/user/*
      • $XDG_RUNTIME_DIR/systemd/user/*
      • /run/systemd/user/*

      Управление службами systemd #

      Дейтвие Команда
      Отобразить состояние systemd systemctl status
      Отобразить список запущенных модулей systemctl или systemctl list-units
      Отобразить список упавших модулей systemctl —failed
      Отобразить список конфигурационных файлов модулей systemctl list-unit-files
      Отобразить статус модуля по PID процесса systemctl status PID
      Дейтвие Команда Комментарий
      Отобразить страницу руководства, ассоциированную с данной службой systemctl help UNIT если указана в конфигурации модуля
      Отобразить статус модуля systemctl status UNIT показывает запущен или остановлен модуль
      Проверить включён ли модуль systemctl is-enabled UNIT

      Управление состоянием службы. Все в данном разделе требуют прав суперпользователя

      Дейтвие Команда
      Запустить модуль systemctl start UNIT
      Остановить работу модуля systemctl stop UNIT
      Перезапустить модуль systemctl restart UNIT
      Дать команду службе перечитать конфигурацию systemctl reload UNIT
      Перечитать конфигурацию systemd systemctl daemon-reload
      Настроить автоматический запуск модуля при старте системы systemctl enable UNIT
      Настроить автоматический запуск модуля при старте системы и сразу запустить его systemctl enable —now UNIT
      Отключить автоматический запуск модуля при старте системы systemctl disable UNIT
      Отключить и настроить автоматический запуск модуля systemctl reenable UNIT

      Управление состоянием системы #

      Данные действия надо выполнять от имени суперпользователя

      Дейтвие Команда
      Выключить ОС и перезагрузить компьютер systemctl reboot
      Выключить ОС и обесточить компьютер systemctl poweroff
      Приостановить работу ОС с сохранением данных в оперативной памяти systemctl suspend
      Приостановить работу ОС с сохранением данных в разделе подкачки systemctl hibernate
      Приостановить работу ОС с гибридным сохранением состояния systemctl hybrid-sleep

      Указание зависимостей #

      • В классическом SysVInit необходимо было следить за включением службы в нужный уровень выполнения
      • В рамках systemd каждая служба указывает список зависимостей
        • Явные зависимости от других служб
        • Неявные зависимости через включение в конкретную цель
        • Создание сервиса systemd
        • Таймеры systemd вместо crond

        Источник

        Список служб Linux с помощью Systemctl

        В Linux служба — это программа, работающая в фоновом режиме . Службы можно запускать по запросу или во время загрузки.

        Если вы используете Linux в качестве основной операционной системы или платформы разработки, вы будете иметь дело с различными службами, такими как веб-сервер, ssh или cron . Знание того, как перечислить запущенные службы или проверить статус службы, важно при отладке системных проблем.

        Большинство последних дистрибутивов Linux используют systemd в качестве системы инициализации и диспетчера служб по умолчанию.

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

        В этой статье объясняется, как составить список служб в Linux.

        Список служб Linux

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

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

        Чтобы получить список всех загруженных служебных единиц, введите:

        sudo systemctl list-units --type service
        UNIT LOAD ACTIVE SUB DESCRIPTION cron.service loaded active running Regular background program processing daemon . 

        Каждая строка вывода содержит следующие столбцы слева направо:

        • UNIT — Название сервисной единицы.
        • LOAD — Информация о том, загружен ли файл объекта в память.
        • ACTIVE — состояние активации файла модуля высокого уровня, которое может быть активным, перезагружающимся, неактивным, неудачным, активируемым, деактивируемым. Это обобщение столбца SUB .
        • SUB — состояние активации файла юнита низкого уровня. Значение этого поля зависит от типа объекта. Например, модуль типа service может находиться в одном из следующих состояний: неработающий, завершенный, сбойный, неактивный или работающий.
        • DESCRIPTION — Краткое описание файла объекта.

        По умолчанию команда перечисляет только загруженные активные юниты. Чтобы увидеть загруженные, но неактивные модули, передайте параметр —all :

        sudo systemctl list-units --type service --all

        Если вы хотите увидеть все установленные файлы модулей, а не только загруженные, используйте:

        sudo systemctl list-unit-files

        Отображение статуса службы

        Чтобы проверить статус службы, используйте команду systemctl status :

        sudo systemctl status .service

        Где — это имя сервисной единицы, которую вы хотите проверить. Например, чтобы определить текущий статус службы nginx, вы должны запустить:

        sudo systemctl status nginx.service

        Вы можете опустить суффикс «.service». systemctl status nginx такое же, как systemctl status nginx.service .

        ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-12-23 19:13:50 UTC; 5s ago Docs: man:nginx(8) Process: 3061052 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 3061063 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 3061064 (nginx) Tasks: 2 (limit: 470) Memory: 6.0M CGroup: /system.slice/nginx.service ├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─3061065 nginx: worker process Dec 23 19:13:50 linuxize.dev systemd[1]: Starting A high performance web server and a reverse proxy server. 

        Команда напечатает следующую информацию:

        • Loaded — Loaded ли служебный модуль и полный путь к файлу модуля. Он также показывает, разрешен ли запуск устройства во время загрузки.
        • Active — активна и работает ли служба. Если ваш терминал поддерживает цвета, а служба активна и работает, точка ( ● ) и часть «активен (работает)» будут напечатаны зеленым цветом. Строка также показывает, как долго работает служба.
        • Docs — служебная документация.
        • Process — информация о процессах обслуживания.
        • Main PID — сервисный PID.
        • Tasks — количество задач, учитываемых для объекта, и лимит задач.
        • Memory — информация об используемой памяти.
        • CGroup — информация о связанных контрольных группах.

        Если вы хотите только проверить статус службы, используйте команду systemctl is-active . Например, чтобы убедиться, что служба nginx запущена, вы должны запустить:

        systemctl is-active nginx.service

        Команда покажет вам статус службы. Если служба активна, команда возвращает статус выхода 0, что может быть полезно при использовании команды внутри сценариев оболочки.

        Выводы

        Мы показали вам, как использовать команду systemctl для systemctl списка служб Linux и проверки их статуса.

        Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии ниже.

        Источник

        Читайте также:  Linux find directories with files
Оцените статью
Adblock
detector