Список служб 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. Команда systemctl
Сервисы или службы — это программы, которые работают в системе Linux в фоновом режиме. Обычно они запускаются при загрузке системы. Большинство сервисов необходимы для полноценной работы системы, то есть они являются своего рода кирпичиками, из которых строится работающая система.
При запуске системы загружается целый ряд сервисов, которые включены для автозагрузки. Сервисы работают пока система запущена, и выгружаются при выключении системы.
Чаще всего в Linux дистрибутивах для инициализации сервисов используется демон Systemd. К Systemd-дистрибутивам относятся Ubuntu, Debian, Linux Mint, Fedora, openSUSE, Solus и другие.
Есть дистрибутивы, которые не используют Systemd. Вместо Systemd могут использоваться такие системы инициализации, как Upstart, SysV.
В качестве примеров сервисов можно привести: веб-сервер Apache, Network Manager, файрвол Ufw и другие.
Для управления сервисами (Systemd) используется утилита systemctl . Ниже мы рассмотрим основные команды данной утилиты.
Список сервисов
Чтобы просмотреть список всех сервисов можно воспользоваться командой:
Данная команда пробегает по алфавитному списку всех доступных сервисов и выполняет для них команду status.
В выводе команды используются следующие обозначения:
- [ + ] — запущенный сервис.
- [ — ] — остановленный сервис.
- [ ? ] — для данного сервиса отсутствует команда status.
Запуск сервиса
Для запуска сервиса используется команда systemctl start имя_сервиса
Останов сервиса
Для остановки сервиса используется команда systemctl stop имя_сервиса
Перезапуск сервиса
Перезапуск сервиса выполняется командой systemctl restart имя_сервиса
sudo systemctl restart ufw
Обычно перезапуск конкретного сервиса требуется, когда были изменены настройки данного сервиса.
Некоторые сервисы поддерживают «мягкую» перезагрузку. В этом случае сервис считывает связанные с ним файлы конфигурации, но не прерывает процесс сервиса. Для выполнения «мягкой» перезагрузки используется команда systemctl reload имя_сервиса . Не все сервисы поддерживают «мягкую» перезагрузку. Если она не поддерживается, то появится сообщение вида: Failed to reload ufw.service: Job type reload is not applicable for unit ufw.service.
Автозагрузка сервисов
Чтобы сервис стартовал (загружался) при запуске системы, его нужно включить в список автозагрузки. Для этого используется команда systemctl enable имя_сервиса
sudo systemctl enable ufw Synchronizing state of ufw.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable ufw
Чтобы включить сервис в автозапуск и сразу же запустить используется команда:
Чтобы удалить сервис из автозагрузки, используется команда systemctl disable имя_сервиса
sudo systemctl disable ufw
Статус сервиса
Для вывода информации (статуса) сервиса используется команда systemctl status имя_сервиса
Чтобы проверить, запущен ли в данный момент сервис, используется команда systemctl is-active имя_сервиса
systemctl is-active ufw acive
Чтобы проверить, включен ли сервис для автозапуска при загрузке системы, используется команда systemctl is-enabled имя_сервиса
systemctl is-enabled ufw enabled
Заключение
Мы рассмотрели наиболее часто используемые команды утилиты systemctl. Полный список команд и опций утилиты systemctl можно получить, выполнив:
Как проверить статус службы Linux
Система инициализации Systemd позволяет не только запускать и останавливать службы, но и проверять их состояние. Для просмотра информации о сервере используется команда status утилиты systemctl. Например, чтобы посмотреть состояние веб-сервера Nginx нужно выполнить такую команду:
sudo systemctl status nginx
Обычно, утилита выводит информацию с пагинацией поскольку данные не умещаются на один экран. Если вы хотите отключить пагинацию используйте опцию —no-pager:
sudo systemctl status nginx —no-pager
Давайте рассмотрим что выводит эта утилита:
- Loaded — значение loaded означает что файл юнита загружен успешно и здесь же выводится путь к этому файлу. Тут возможны и другие значения, например, masked если юнит скрыт или not-found если он не найден также здесь находится информация добавлен ли юнит в автозагрузку (enabled/disabled);
- Active — текущее состояние и подсостояние юнита, если юнит запущен, то обычно это active(running), если он не был запущен, то inactive(dead) если что-то пошло не так то failed и т д.
- Docs — название man страницы с документацией для службы.
- Process — запускаемые процессы, их состояние и код выхода.
- Main PID — идентификатор основного процесса службы.
- Tasks — количество процессов, запущенных в рамках этой службы.
- Memory — потребление памяти службой.
- CPU — использование процессора службой.
Для того чтобы посмотреть все доступные значения состояний для полей Loaded и Active выполните такую команду:
После всех этих полей выводится журнал службы. Это последние 10 строк вывода основного процесса. Если вы хотите получить больше строк используйте опцию —lines с нужным количеством строк. Например, для получения 50-ти последних строк выполните:
sudo systemctl status —lines=50 avahi-daemon
Если конец строки логов обрезается до ширины экрана, вы можете использовать опцию -l или —-full для того чтобы этого избежать:
sudo systemctl status nginx.service
Для того чтобы посмотреть ещё больше логов можно воспользоваться утилитой journalctl с опцией -u которой надо передать название сервиса. например:
journalctl -eu nginx.service
Команда начнёт вывод логов с конца. Вы можете использовать клавиши со стрелками для того чтобы листать логи. Кроме того, можно посмотреть историю изменений статуса службы с помощью команды journalctl с опциями -xeu. Например:
journalctl -xeu nginx.service
Более подробно об управлении службами читайте в этой статье, а про journalctl в статье под названием Шпаргалка по Journalctl.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.