Как проверить, активна ли служба в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом практическом занятии (лабораторной работе) вы научитесь проверять статус служб, запущенных на системе Linux. Мы рассмотрим различные методы, начиная с современной команды systemctl status, поймем ее вывод и значение даже в средах, где прямое выполнение ограничено.

Затем вы научитесь использовать более старую, но все еще актуальную команду service для подтверждения статуса службы и, наконец, проверите запущенный процесс, связанный со службой, с помощью команды ps aux. Этот практический опыт предоставит вам важные навыки для мониторинга и управления службами в Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") subgraph Lab Skills linux/echo -.-> lab-558679{{"Как проверить, активна ли служба в Linux"}} linux/grep -.-> lab-558679{{"Как проверить, активна ли служба в Linux"}} linux/ps -.-> lab-558679{{"Как проверить, активна ли служба в Linux"}} linux/service -.-> lab-558679{{"Как проверить, активна ли служба в Linux"}} end

Проверка статуса службы с помощью команды systemctl status

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

Хотя в данной среде LabEx вы не можете напрямую использовать команду systemctl (так как среда работает в контейнере Docker), понимание ее работы является важным для управления службами на реальной системе Linux. Мы рассмотрим концепцию и покажем типичное использование этой команды.

На стандартной системе Linux, использующей systemd (что характерно для современных дистрибутивов, таких как Ubuntu), вы можете использовать команду systemctl status, за которой следует имя службы, чтобы проверить, запущена ли служба, активна ли она или завершилась с ошибкой.

Например, чтобы проверить статус службы ssh (которая обеспечивает безопасный удаленный доступ), вы обычно запустите следующую команду:

systemctl status ssh

Вывод будет выглядеть приблизительно так (точные детали могут различаться):

● ssh.service - OpenBSD Secure Shell server
     Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
     Active: active (running) since ...
       Docs: man:sshd(8)
             man:ssh(1)
   Main PID: ... (sshd)
      Tasks: ... (limit: ...)
     Memory: ...
        CPU: ...
     CGroup: /system.slice/ssh.service
             └─... /usr/sbin/sshd -D

...

Основные элементы, которые нужно проверить в выводе:

  • Loaded: Показывает, была ли корректно загружена конфигурация службы.
  • Active: Указывает текущее состояние службы (например, active (running) - активна (запущена), inactive (dead) - неактивна (остановлена), failed - завершилась с ошибкой).
  • Main PID: Идентификатор основного процесса службы.

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

Для имитации проверки статуса службы и практики выполнения команд давайте снова используем команду echo для вывода сообщения о том, что вы узнали о команде systemctl status.

Введите следующую команду в терминале:

echo "Learned about systemctl status"

Нажмите Enter.

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

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

Подтверждение статуса службы с помощью вывода команды service

На этом этапе вы узнаете о другой команде для управления службами - service. Эта команда часто используется на системах, не использующих systemd, или для совместимости со старыми системами инициализации (init systems).

Команда service предоставляет более простой интерфейс для запуска, остановки, перезапуска и проверки статуса служб.

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

service <service-name> status

Как и в случае с systemctl, вы должны заменить <service-name> на фактическое имя службы, статус которой вы хотите проверить.

Например, на системе, где веб - сервер apache2 установлен и управляется с помощью команды service, вы можете проверить его статус так:

service apache2 status

Вывод обычно указывает, запущена ли служба или нет.

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

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

Введите следующую команду в терминале:

echo "Understood service command"

Нажмите Enter.

Это действие служит маркером того, что вы завершили этот этап и узнали о команде service.

Нажмите Продолжить, чтобы перейти к следующему этапу.

Проверка запущенных процессов службы с помощью команды ps aux

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

Команда ps выводит снимок текущих процессов. Опции aux обычно используются для отображения процессов всех пользователей (a), включая те, которые не связаны с терминалом (x), и для отображения подробной информации в удобочитаемом формате (u).

Когда служба запущена, обычно с ней связан один или несколько процессов. Вы можете использовать команду ps aux и передать ее вывод в grep, чтобы отфильтровать процессы, связанные с определенной службой.

Например, чтобы проверить, есть ли какие - то процессы, связанные со службой ssh, вы можете использовать следующую команду:

ps aux | grep ssh

Давайте попробуем это в нашей среде LabEx. Мы знаем, что терминал сам по себе представляет собой запущенный процесс. Давайте используем команду ps aux для поиска процесса нашего zsh - оболочки.

Введите следующую команду в терминале:

ps aux | grep zsh

Нажмите Enter.

Вы должны увидеть вывод, похожий на следующий:

labex       ...  ...  ...  ... ?        Ss   ... ...:.. /usr/bin/zsh
labex       ...  ...  ...  ... ?        S+   ... ...:.. grep --color=auto zsh

Первая строка показывает процесс zsh (ваша терминал - оболочка), а вторая строка показывает команду grep, которую вы только что запустили (которая также является процессом!).

Этот метод (ps aux | grep <service-name>) является мощным способом подтвердить, запущена ли служба, путем проверки ее активных процессов, особенно когда команды systemctl или service могут быть недоступны или не предоставлять достаточной информации.

Чтобы завершить этот этап, используйте команду echo для подтверждения того, что вы потренировались в использовании ps aux с grep.

Введите следующую команду:

echo "Practiced ps aux with grep"

Нажмите Enter.

Нажмите Продолжить, чтобы завершить лабораторную работу.

Резюме

В этой лабораторной работе вы научились проверять статус служб в Linux различными методами. Вам были представлены команда systemctl status, которая является стандартным способом проверки статуса служб на современных системах Linux, использующих systemd, хотя непосредственное выполнение было смоделировано из - за лабораторной среды. Вы также узнали, как подтвердить статус службы с использованием более старой команды service и как проверить запущенный процесс службы, изучая список процессов с помощью команды ps aux. Эти шаги предоставляют комплексный подход к определению, активна ли и запущена ли конкретная служба на системе Linux.