Поиск по сайту:
Я слишком много читал, чтобы остаться в здравом уме (Г. Лессинг).

Использование команды ps aux в Linux

18.02.2025
Использование команды ps aux в Linux

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

В этой статье представлено всестороннее описание ps aux — от базовых концепций до продвинутых методов фильтрации, которые помогут вам извлекать полезную информацию из данных о процессах.

 

Предварительные условия

Чтобы следовать руководству:

  • Разверните экземпляр облачного сервера Linux в Hostman
  • SSH в экземпляр сервера

 

Понимание процессов в Linux

Прежде чем мы рассмотрим команду ps aux, давайте разберёмся, что такое процессы в контексте системы Linux.

 

Что такое процессы?

Процесс — это активная программа или служба, запущенная в вашей системе Linux. Каждый раз, когда вы выполняете команду, запускаете приложение или активируете фоновую службу, вы создаёте процесс.

Linux присваивает каждому процессу уникальный идентификатор, называемый идентификатором процесса (PID). Этот PID позволяет системе эффективно отслеживать отдельные процессы и управлять ими.

 

Почему процессы сгруппированы в Linux?

Linux использует иерархическую структуру для организации процессов. Эта структура напоминает генеалогическое древо, где исходный процесс init (или systemd) выступает в качестве родителя или предка.

Все остальные процессы являются производными от этого начального процесса, образуя отношения «родитель-потомок». Такая иерархия способствует эффективному управлению процессами и распределению ресурсов.

 

Команда ps

Команда ps (process status «состояние процесса») предоставляет статическую сводку по активным процессам на момент выполнения. В отличие от динамических инструментов, таких как top или htop, которые обновляются в режиме реального времени, ps идеально подходит для написания сценариев, ведения журналов или анализа процессов в конкретный момент времени.

ps auxСинтаксис объединяет три ключевых параметра:

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

 

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

 

Декодирование выхода ps aux

Выполнение ps aux генерирует таблицу из 11 столбцов, каждый из которых даёт важную информацию о поведении процесса. Ниже приводится подробное описание этих столбцов:

Использование команды ps aux в Linux

 

USER

В этом столбце указывается владелец процесса. Записи варьируются от стандартных пользователей до системных учётных записей, таких как rootmysql, или www-data. Мониторинг этого поля помогает обнаруживать несанкционированные процессы или определять, какие пользователи потребляют слишком много ресурсов.

Читать  Как я могу исключить каталоги с помощью команды grep -R

 

PID

Идентификатор процесса (PID) — это уникальный числовой идентификатор, присваиваемый каждой задаче. Администраторы используют PID для управления процессами, например, для завершения некорректно работающего приложения с помощью kill [PID] или изменения его приоритета с помощью renice.

 

%CPU и %MEM

В этих столбцах отображается процент ресурсов ЦП и ОЗУ, используемых процессом. Значения выше 50% в любом из столбцов часто указывают на узкие места в производительности. Например, процесс базы данных, потребляющий 80% ресурсов ЦП, может указывать на неэффективные запросы или недостаточную производительность оборудования.

 

VSZ и RSS

VSZ (размер виртуальной памяти) обозначает общий объём виртуальной памяти, выделенной процессу, включая память, перемещённую на диск.

С другой стороны, RSS (размер резидентного набора) представляет собой объём физической памяти, активно используемой процессом.

Процесс с большим VSZ, но низким RSS может резервировать память, не используя её активно, что характерно для приложений, которые предварительно выделяют ресурсы.

 

TTY

В этом поле отображается терминал, связанный с процессом. Символ ? указывает на отсутствие связи с терминалом, что характерно для фоновых служб, таких как задачи cron или systemd-managed.

 

STAT

Столбец STAT показывает состояния процесса с помощью основного символа + необязательных атрибутов:

  1. Первичные состояния:
    • R: Запущен или готов к выполнению.
    • S: Спит, ожидая события или сигнала.
    • I: незанятый поток ядра
    • D: Непрерывистый сон (обычно связан с операциями ввода-вывода).
    • Z: Zombie — завершенный процесс, ожидающий удаления своим родителем.
  1. Ключевые атрибуты:
    • s: Руководитель сеанса
    • N: Низкий приоритет
    • <: Высокий приоритет

 

Например, STAT значение Ss обозначает лидера спящего сеанса, в то время как l< указывает бездействующий поток ядра с высоким приоритетом.

 

START и TIME

START — указывает время или дату начала процесса. Полезно для определения задач, которые выполняются долго.

TIME — это совокупное время, затраченное процессором с момента запуска. Процесс, работающий в течение нескольких дней с минимальным TIME использованием, скорее всего, простаивает.

 

COMMAND

В этом столбце отображается команда или приложение, запустившие процесс. Он помогает определить назначение задачи — например, /usr/bin/python3 для скрипта Python или /usr/sbin/nginx для веб-сервера Nginx.

 

Передовые методы фильтрации процессов

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

 

Изоляция конкретных процессов

Чтобы сосредоточиться на конкретной службе, например SSH, перенаправьте вывод в grep:

ps aux | grep sshd

 

Пример вывода:

root         579  0.0  0.5  15436  5512 ?        Ss    2024   9:35 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root     2090997  0.0  0.8  17456  8788 ?        Ss   11:26   0:00 sshd: root@pts/0
root     2092718  0.0  0.1   4024  1960 pts/0    S+   12:19   0:00 grep --color=auto sshd

 

Читать  Как удалить непустой каталог в Linux

Это отфильтрует строки, содержащие sshd, и покажет все процессы, связанные с SSH. Чтобы исключить из результатов саму команду grep, используйте регулярное выражение:

ps aux | grep "[s]shd"

 

Пример вывода:

root         579  0.0  0.5  15436  5512 ?        Ss    2024   9:35 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
root     2090997  0.0  0.8  17456  8788 ?        Ss   11:26   0:00 sshd: root@pts/0

Сортировка по Потреблению ресурсов

Определите процессы, требующие больших затрат процессора, отсортировав выходные данные в порядке убывания:

ps aux --sort=-%cpu | head -n 10

 

Пример вывода:

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mysql    1734280  0.4 36.4 1325172 357284 ?      Ssl  Jan30  87:39 /usr/sbin/mysqld
redis    1424968  0.3  0.6 136648  6240 ?        Ssl  Jan18 112:25 /usr/bin/redis-server 127.0.0.1:6379
root           1  0.0  0.6 165832  6824 ?        Ss    2024   5:51 /lib/systemd/systemd --system --deserialize 45
root           2  0.0  0.0      0     0 ?        S     2024   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<    2024   0:00 [rcu_gp]
root           4  0.0  0.0      0     0 ?        I<    2024   0:00 [rcu_par_gp]
root           5  0.0  0.0      0     0 ?        I<    2024   0:00 [slub_flushwq]
root           6  0.0  0.0      0     0 ?        I<    2024   0:00 [netns]
root           8  0.0  0.0      0     0 ?        I<    2024   0:00 [kworker/0:0H-events_highpri]

 

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

ps aux --sort=-%mem | head -n 10

 

Пример вывода:

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
mysql    1734280  0.4 36.4 1325172 357284 ?      Ssl  Jan30  87:39 /usr/sbin/mysqld
root         330  0.0  4.4 269016 43900 ?        S<s   2024  22:43 /lib/systemd/systemd-journald
root         368  0.0  2.7 289316 27100 ?        SLsl  2024   8:19 /sbin/multipathd -d -s
root     1548462  0.0  2.5 1914688 25488 ?       Ssl  Jan23   2:08 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root     1317247  0.0  1.8 1801036 17760 ?       Ssl  Jan14  22:24 /usr/bin/containerd
root         556  0.0  1.2  30104 11956 ?        Ss    2024   0:00 /usr/bin/python3 /usr/bin/networkd-dispatcher --run-startup-triggers
root         635  0.0  1.1 107224 11092 ?        Ssl   2024   0:00 /usr/bin/python3 /usr/share/unattended-upgrades/unattended-upgrade-shutdown --wait-for-signal
root     2090997  0.0  0.8  17456  8788 ?        Ss   11:26   0:00 sshd: root@pts/0
root     2091033  0.0  0.8   9936  8480 pts/0    Ss   11:26   0:00 bash --rcfile /dev/fd/63

Мониторинг в режиме реального времени

Объедините ps aux с командой watch, чтобы обновлять выходные данные каждые 2 секунды:

watch -n 2 "ps aux --sort=-%cpu"

 

Это обеспечивает динамическое представление тенденций использования ЦП.

 

Обнаружение процесса Зомби

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

ps aux | grep 'Z'

 

Читать  Советы и хитрости терминала Linux

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

 

Примеры практического использования

Теперь давайте рассмотрим несколько распространённых случаев использования команды ps aux в Linux:

 

Диагностика Высокой загрузки процессора

Выполните следующие действия:

  1. Выполните эту команду, чтобы составить список процессов по потреблению ЦП.
ps aux --sort=-%cpu
  1. Определите виновника — например, неисправный скрипт, использующий 95% ресурсов процессора.
  2. Если не отвечает, завершите процесс корректно с помощью:
kill [PID]

 

Или насильно с:

kill -9 [PID]

Обнаружение утечек памяти

Просто выполните следующие действия:

  1. Сортировка процессов по использованию памяти:
ps aux --sort=-%mem
  1. Исследуйте задачи с аномально высокими %MEM значениями.
  2. Перезапустите службу-нарушитель или обратитесь к разработчикам для оптимизации кода.

 

Аудит Активности Пользователя

Перечислите все процессы, принадлежащие определенному пользователю (например, Jenkins).:

ps aux | grep ^jenkins

 

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

 

Лучшие практики управления процессами

Давайте теперь вкратце рассмотрим некоторые рекомендации, которые следует учитывать при управлении процессами Linux:

  • Изящное завершение работы: выберите kill [PID] вместо kill -9 для очистки ресурсов процессами.
  • Моментальные снимки журнала: Периодическое сохранение списков процессов для проверок.:
ps aux > /var/log/process_audit_$(date +%F).log
  • Контекстный анализ: высокое значение %CPU может быть нормальным для видеокодека, но тревожным для текстового редактора. Поэтому при анализе важно учитывать контекст.

 

Распространенные подводные камни, которых следует избегать

Вот несколько подводных камней, на которые следует обратить внимание при использовании ps aux в Linux:

  • Неверная интерпретация VSZ: высокая загрузка виртуальной памяти не всегда указывает на проблему — она включает в себя выгруженные данные.
  • Переодические зомби-процессы: несмотря на то, что в большинстве случаев они безвредны, повторяющиеся зомби-процессы требуют изучения родительских процессов.
  • Завершение работы критически важных служб: всегда проверяйте поле COMMAND перед использованием команды kill, чтобы не нарушить работу важных служб.

 

Заключение

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

Для дальнейшего изучения обратитесь к руководству по ps (man ps) или интегрируйте мониторинг процессов в автоматизированные сценарии для упреждающего управления системой.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Современные технологии, включая мощные компьютеры, машинное обучение и биоинформатику, играют…

Спасибо!

Теперь редакторы в курсе.