Как проверить, запущен ли процесс в Linux

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

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

Введение

В этом практическом занятии (лабораторной работе) вы научитесь основным навыкам работы с Linux для управления и мониторинга процессов. Вы узнаете, как вывести список всех запущенных процессов в системе с помощью команды ps aux, которая предоставляет мгновенное изображение текущих процессов с подробной информацией, такой как пользователь, PID, использование ЦП и памяти.

Кроме того, вы научитесь эффективно искать определенные процессы с помощью команды pgrep и получить представление о реальном времени активности процессов и потреблении ресурсов, используя команду top. Эти методы являются важными для системного администрирования, устранения неполадок и понимания производительности системы.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/ProcessManagementandControlGroup(["Process Management and Control"]) linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/ProcessManagementandControlGroup -.-> linux/kill("Process Terminating") linux/ProcessManagementandControlGroup -.-> linux/pkill("Pattern-Based Killing") linux/SystemInformationandMonitoringGroup -.-> linux/ps("Process Displaying") linux/SystemInformationandMonitoringGroup -.-> linux/top("Task Displaying") subgraph Lab Skills linux/kill -.-> lab-558747{{"Как проверить, запущен ли процесс в Linux"}} linux/pkill -.-> lab-558747{{"Как проверить, запущен ли процесс в Linux"}} linux/ps -.-> lab-558747{{"Как проверить, запущен ли процесс в Linux"}} linux/top -.-> lab-558747{{"Как проверить, запущен ли процесс в Linux"}} end

Вывод списка запущенных процессов с помощью команды ps aux

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

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

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

  • a: Отображает все процессы.
  • u: Отображает пользователя и владельца процесса.
  • x: Отображает процессы, не имеющие управляющего терминала (полезно для просмотра фоновых процессов).

Если терминал еще не открыт, откройте его. По умолчанию вы должны находиться в каталоге ~/project.

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

ps aux

Вы увидите длинный список процессов, похожий на этот (точный вывод может отличаться):

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.1  16840  9880 ?        Ss   Jul23   0:01 /sbin/init
root           2  0.0  0.0      0     0 ?        S    Jul23   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   Jul23   0:00 [rcu_gp]
...
labex      12345  0.1  0.5 123456 54321 pts/0    Ss   HH:MM   0:00 /usr/bin/zsh
labex      12367  0.0  0.1  21000  5000 pts/0    R+   HH:MM   0:00 ps aux
...

Разберем столбцы, которые вы видите:

  • USER: Пользователь, владеющий процессом.
  • PID: Идентификатор процесса (Process ID), уникальный номер для каждого запущенного процесса.
  • %CPU: Процент времени ЦП, используемый процессом.
  • %MEM: Процент физической памяти, используемой процессом.
  • VSZ: Размер виртуального адресного пространства (Virtual Set Size), общее количество виртуальной памяти, используемой процессом.
  • RSS: Размер резидентного набора (Resident Set Size), количество физической памяти, используемой процессом.
  • TTY: Управляющий терминал для процесса (если есть). ? означает отсутствие управляющего терминала.
  • STAT: Статус процесса (например, R - запущен, S - спит, Z - зомби).
  • START: Время запуска процесса.
  • TIME: Совокупное время ЦП, использованное процессом.
  • COMMAND: Команда, которая запустила процесс.

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

Нажмите Продолжить, чтобы продолжить.

Поиск определенного процесса с использованием команды pgrep

На предыдущем этапе вы увидели, что команда ps aux может вывести большое количество информации. Часто вам нужно найти только определенный процесс. Команда pgrep предназначена именно для этого. Она ищет процессы по их имени и возвращает их идентификаторы процессов (PID).

Базовый синтаксис команды pgrep выглядит так: pgrep [параметры] шаблон. Шаблон обычно представляет собой имя процесса, который вы ищете.

Попробуем найти PID процесса zsh, который является оболочкой (shell), которую вы в настоящее время используете в терминале.

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

pgrep zsh

В терминале должны появиться одно или несколько чисел. Это PID запущенных процессов zsh.

12345

(У вас это число будет другим).

Если вы хотите увидеть полную команду, связанную с PID, найденным с помощью pgrep, вы можете сочетать ее с командой ps. Параметр -p команды ps позволяет указать PID.

Найдем полную команду для процесса zsh с использованием его PID. Сначала запустите pgrep zsh еще раз, чтобы получить текущий PID. Предположим, что в этом примере PID равен 12345 (замените 12345 на фактический PID, который вы получите).

Теперь используйте ps -p, за которым следует PID:

ps -p 12345

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

    PID TTY          TIME CMD
  12345 pts/0    00:00:00 zsh

Это подтверждает, что PID 12345 соответствует команде zsh.

pgrep - это быстрый способ найти PID процесса, если вы знаете его имя. Это особенно полезно, когда вам нужен PID для других команд, например, для завершения процесса (о чем вы узнаете в будущем практическом занятии).

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

Мониторинг деталей процессов с помощью команды top

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

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

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

top

В терминале появится постоянно обновляемый список процессов. Вывод будет похож на следующий:

top - HH:MM:SS up  X days, HH:MM,  X users,  load average: X.XX, X.XX, X.XX
Tasks: XXX total,   X running, XXX sleeping,   X stopped,   X zombie
%Cpu(s):  X.X us,  X.X sy,  X.X ni, XX.X id,  X.X wa,  X.X hi,  X.X si,  X.X st
MiB Mem :  XXXX.X total,  XXXX.X free,  XXXX.X used,  XXX.X buff/cache
MiB Swap:  XXXX.X total,  XXXX.X free,  XXXX.X used. XXXX.X avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
  12345 labex     20   0  123456  54321  32100 S   0.1   0.5   0:00.10 zsh
  12367 labex     20   0   21000   5000   3000 R   0.0   0.1   0:00.05 top
  ...

Рассмотрим основные области вывода команды top:

  • Общая информация (верхняя часть): В этом разделе показана сводка по системе, включая:

    • Текущее время и время работы системы.
    • Количество вошедших в систему пользователей.
    • Средняя загрузка системы (среднее количество процессов, ожидающих выполнения за последние 1, 5 и 15 минут).
    • Общее количество задач (процессов) и их состояния (запущенные, спящие, остановленные, зомби).
    • Разбивка использования ЦП (пользовательское, системное, простой и т.д.).
    • Использование памяти (всего, свободно, использовано, буфер/кеш).
    • Использование своп-пространства.
  • Список процессов (нижняя часть): В этом разделе перечислены отдельные процессы, по умолчанию отсортированные по использованию ЦП. Столбцы аналогичны выводу команды ps aux, но top обновляет их в реальном времени. Основные столбцы включают:

    • PID: Идентификатор процесса.
    • USER: Владелец процесса.
    • %CPU: Процент использования ЦП.
    • %MEM: Процент использования памяти.
    • COMMAND: Имя команды.

Во время работы команды top вы можете взаимодействовать с ней, используя различные клавиши:

  • Нажмите q, чтобы выйти из top.
  • Нажмите M, чтобы отсортировать список процессов по использованию памяти.
  • Нажмите P, чтобы отсортировать список процессов по использованию ЦП (это значение по умолчанию).
  • Нажмите k, чтобы завершить процесс (вам будет предложено ввести PID). Будьте осторожны с этим!

Отведите немного времени на наблюдение за процессами и изменением использования ЦП и памяти. Вы увидите, что процесс top находится близко к началу списка, так как он активно использует ЦП для обновления отображения.

После того, как вы закончите изучать top, нажмите q, чтобы выйти и вернуться к обычной командной строке терминала.

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

Резюме

В этой лабораторной работе вы изучили основные методы проверки запущенности процессов в Linux. Вы начали с использования команды ps aux для вывода списка всех запущенных процессов в системе, изучив различные столбцы, такие как USER, PID, %CPU и %MEM, которые дают снимок активности процессов.

Затем вы рассмотрели, как эффективно найти определенный процесс с помощью команды pgrep, которая ищет процессы по их имени или другим атрибутам и возвращает их идентификаторы процессов (PID). Наконец, вы узнали, как мониторить детали процессов в реальном времени с помощью команды top, которая предоставляет динамическое представление о использовании системных ресурсов и статистике отдельных процессов, позволяя вам наблюдать потребление ЦП и памяти.