Как посмотреть текущие процессы на VPS Linux Ubuntu?

Управление процессами – критически важная задача для любого администратора VPS (Virtual Private Server) на Ubuntu. Знание того, как просматривать текущие процессы, позволяет отслеживать потребление ресурсов, выявлять проблемные приложения и обеспечивать стабильную работу сервера. В этой статье мы подробно рассмотрим различные способы просмотра процессов на Ubuntu VPS, предоставим практические примеры использования командной строки и GUI-инструментов, а также поделимся полезными советами по интерпретации полученных данных.

Мы изучим команды ps, top, htop и другие инструменты, позволяющие получить исчерпывающую информацию о запущенных процессах. Вы научитесь фильтровать процессы по пользователю, PID (Process ID) и другим критериям, а также узнаете, как анализировать использование ресурсов (CPU, RAM) каждым процессом. Эта информация поможет вам оптимизировать производительность вашего VPS и оперативно реагировать на любые проблемы.

Команда ps: базовый обзор процессов

Команда ps (process status) – это один из самых основных и мощных инструментов для просмотра информации о процессах в Linux. Она предоставляет снимок текущих процессов в системе. Существует множество опций команды ps, позволяющих настроить вывод информации в соответствии с вашими потребностями. Базовая команда ps без опций покажет только процессы, запущенные в текущей оболочке. Чтобы получить более полный список процессов, обычно используют опции aux.
ps aux
Эта команда выведет список всех процессов, запущенных в системе, с подробной информацией о каждом процессе. Давайте разберем столбцы вывода команды ps aux:
  • USER: Имя пользователя, владеющего процессом.
  • PID: Идентификатор процесса (Process ID).
  • %CPU: Процент использования CPU процессом.
  • %MEM: Процент использования оперативной памяти процессом.
  • VSZ: Виртуальный размер процесса (в килобайтах).
  • RSS: Реальный размер процесса в оперативной памяти (в килобайтах).
  • TTY: Терминал, к которому привязан процесс (если есть). ? означает, что процесс не привязан к терминалу.
  • STAT: Состояние процесса (например, S – спящий, R – работающий, Z – зомби).
  • START: Время запуска процесса.
  • TIME: Общее время использования CPU процессом.
  • COMMAND: Команда, запустившая процесс.
Пример:
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  16704  4192 ?        Ss   Dec01   0:03 /sbin/init
root         2  0.0  0.0      0     0 ?        S    Dec01   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   Dec01   0:00 [rcu_gp]
root         4  0.0  0.0      0     0 ?        I<   Dec01   0:00 [rcu_par_gp]
root         6  0.0  0.0      0     0 ?        I<   Dec01   0:00 [kworker/0:0H-kblockd]
...
Другая полезная опция команды ps – это -f (full format), которая предоставляет больше информации о процессе, включая родительский PID (PPID). Это может быть полезно для отслеживания иерархии процессов.
ps -f
Комбинируя опции, можно получить еще более подробную информацию. Например, ps auxf выведет список всех процессов с полной информацией и отобразит иерархию процессов в виде дерева.
ps auxf
Еще один распространенный вариант использования – ps -ef, который также отображает все процессы, но использует другой формат вывода, более привычный для систем V (System V).
ps -ef
Совет эксперта: Для поиска конкретного процесса по имени можно использовать команду ps в сочетании с grep. Например, чтобы найти все процессы, содержащие "nginx" в своем имени, можно использовать следующую команду:
ps aux | grep nginx
Это позволит быстро найти процессы, связанные с определенным приложением.

Интерактивный мониторинг с помощью top и htop

Команды top и htop – это интерактивные инструменты, которые позволяют в реальном времени отслеживать использование ресурсов системой и процессами. Они предоставляют динамическую информацию о загрузке CPU, использовании памяти, времени работы и других важных параметрах. top – это стандартная утилита, которая обычно предустановлена на большинстве дистрибутивов Linux. Чтобы запустить top, просто введите команду в терминале:
top
После запуска top отобразится динамический список процессов, отсортированных по умолчанию по проценту использования CPU. В верхней части экрана отображается сводная информация о системе, включая загрузку CPU, использование памяти (RAM и swap), а также количество запущенных процессов. Внутри top можно использовать различные команды для управления отображением информации. Например:
  • q: Выход из top.
  • h: Отображение справки.
  • k: Завершение процесса (требуется ввести PID).
  • M: Сортировка процессов по использованию памяти.
  • P: Сортировка процессов по использованию CPU.
  • 1: Отображение информации о каждом CPU (если у вас многоядерный процессор).
htop – это более продвинутая версия top с улучшенным интерфейсом и дополнительными функциями. Он также отображает информацию о процессах в реальном времени, но имеет более удобный интерфейс с цветной подсветкой и возможностью навигации с помощью клавиш управления курсором. htop обычно не предустановлен, поэтому его необходимо установить отдельно. На Ubuntu это можно сделать с помощью команды:
sudo apt update
sudo apt install htop
После установки запустите htop командой:
htop
htop позволяет легко убивать процессы, менять их приоритет (nice value) и фильтровать список процессов. Он также отображает информацию о загрузке CPU по ядрам, что позволяет более детально анализировать производительность системы. Сравнение top и htop:
Функцияtophtop
ИнтерфейсТекстовый, менее удобныйИнтерактивный, с цветной подсветкой
Управление процессамиОграниченные возможностиРасширенные возможности (убийство, изменение приоритета)
Мониторинг CPUОбщая загрузка CPUЗагрузка CPU по ядрам
УстановкаОбычно предустановленТребуется установка
Пример использования htop: Допустим, вы заметили, что ваш VPS работает медленно. Запустите htop и посмотрите, какие процессы потребляют больше всего CPU и памяти. Если вы обнаружите процесс, который потребляет ресурсы неадекватно, вы можете убить его прямо из htop, выбрав процесс и нажав клавишу F9. Совет эксперта: htop можно настроить с помощью файла конфигурации ~/.config/htop/htoprc. Вы можете изменить цвета, добавить или удалить столбцы и настроить другие параметры отображения.

Фильтрация процессов: поиск по пользователю и PID

Часто возникает необходимость отфильтровать список процессов, чтобы найти конкретный процесс или группу процессов, принадлежащих определенному пользователю. Для этого можно использовать различные инструменты и опции команды ps. Фильтрация по пользователю: Один из способов отфильтровать процессы по пользователю – использовать команду ps в сочетании с командой grep. Например, чтобы найти все процессы, принадлежащие пользователю "john", можно использовать следующую команду:
ps aux | grep john
Эта команда выведет список всех процессов, в которых имя пользователя совпадает с "john". Однако, этот метод может дать ложные срабатывания, если имя пользователя встречается в команде процесса. Более точный способ – использовать опцию -u команды ps. Эта опция позволяет указать имя пользователя, процессы которого нужно отобразить.
ps -u john
Эта команда выведет список всех процессов, принадлежащих пользователю "john". Фильтрация по PID: Иногда необходимо получить информацию о конкретном процессе по его PID (Process ID). Для этого также можно использовать команду ps.
ps -p PID
Замените PID на реальный идентификатор процесса. Например, чтобы получить информацию о процессе с PID 1234, используйте:
ps -p 1234
Эта команда выведет информацию о процессе с указанным PID. Другой способ получить PID процесса по его имени – использовать команду pidof. Например, чтобы получить PID процесса "nginx", используйте:
pidof nginx
Эта команда выведет PID процесса "nginx". Если запущено несколько процессов с таким именем, она выведет все PID через пробел. Также можно использовать команду pgrep для поиска процессов по имени или другим критериям. pgrep возвращает PID процессов, соответствующих заданному шаблону.
pgrep nginx
Эта команда также выведет PID процесса "nginx". pgrep имеет больше опций для фильтрации процессов, например, можно фильтровать процессы по имени пользователя:
pgrep -u john nginx
Эта команда выведет PID процесса "nginx", принадлежащего пользователю "john". Пример: Допустим, вы хотите остановить процесс Apache, принадлежащий пользователю "www-data". Сначала найдите PID процесса с помощью pgrep:
pgrep -u www-data apache2
Затем используйте команду kill для завершения процесса:
sudo kill PID
Замените PID на PID, полученный из pgrep. Совет эксперта: Чтобы автоматически завершить все процессы, принадлежащие определенному пользователю, можно использовать команду pkill:
sudo pkill -u john
Эта команда завершит все процессы, принадлежащие пользователю "john". Будьте осторожны с использованием этой команды, так как она может привести к потере данных, если процессы не были корректно завершены.

Анализ использования ресурсов процессами

Анализ использования ресурсов процессами – важный шаг в оптимизации производительности VPS. Необходимо понимать, какие процессы потребляют больше всего CPU и памяти, чтобы выявить потенциальные проблемы и предпринять необходимые меры. Как мы уже обсуждали, команды top и htop предоставляют информацию об использовании ресурсов в реальном времени. Однако, можно использовать и команду ps для получения более детальной информации. Использование CPU: Чтобы увидеть процессы, отсортированные по использованию CPU, можно использовать команду ps с опцией -o для указания столбцов, которые нужно отобразить, и командой sort для сортировки результатов.
ps -eo pid,pcpu,comm | sort -k2 -r | head -n 10
Эта команда выведет 10 процессов, потребляющих больше всего CPU, отсортированных по убыванию. Разберем команду:
  • ps -eo pid,pcpu,comm: Выводит PID, процент использования CPU (%CPU) и имя команды (comm) для всех процессов.
  • sort -k2 -r: Сортирует результаты по второму столбцу (CPU) в обратном порядке (от большего к меньшему).
  • head -n 10: Выводит первые 10 строк результатов.
Использование памяти: Аналогично, чтобы увидеть процессы, отсортированные по использованию памяти, можно использовать следующую команду:
ps -eo pid,pmem,comm | sort -k2 -r | head -n 10
Эта команда выведет 10 процессов, потребляющих больше всего памяти, отсортированных по убыванию. Здесь pmem означает процент использования памяти (%MEM). Для отображения реального объема памяти, используемого процессом (RSS - Resident Set Size), можно использовать следующую команду:
ps -eo pid,rss,comm | sort -k2 -r | head -n 10
Эта команда выведет 10 процессов, использующих больше всего реальной памяти, отсортированных по убыванию. Значение RSS отображается в килобайтах. Анализ потребления ресурсов конкретным процессом: Если вы знаете PID процесса, можно использовать команду ps с опцией -p для получения информации о его использовании ресурсов:
ps -p PID -o pid,pcpu,pmem,rss,vsz,comm
Замените PID на реальный идентификатор процесса. Эта команда выведет PID, процент использования CPU, процент использования памяти, реальный размер (RSS), виртуальный размер (VSZ) и имя команды (comm) для указанного процесса. Пример: Допустим, вы заметили, что процесс с PID 4567 потребляет много ресурсов. Выполните следующую команду:
ps -p 4567 -o pid,pcpu,pmem,rss,vsz,comm
Вывод команды покажет вам, сколько CPU и памяти использует этот процесс, что поможет вам определить, является ли это нормальным поведением или указывает на проблему. Совет эксперта: Для долгосрочного мониторинга использования ресурсов можно использовать инструменты, такие как sar (System Activity Reporter) или collectd. Они позволяют собирать статистику об использовании ресурсов системой и процессами в течение времени, что полезно для выявления трендов и узких мест.

Просмотр процессов, управляемых Systemd

Systemd – это system и service manager, который используется в большинстве современных дистрибутивов Linux, включая Ubuntu. Systemd управляет большинством системных служб и приложений, поэтому важно уметь просматривать процессы, управляемые Systemd. Systemd использует концепцию "юнитов" (units) для представления служб, сокетов, устройств и других компонентов системы. Каждый юнит имеет соответствующий файл конфигурации, определяющий его поведение. Для просмотра списка всех юнитов, управляемых Systemd, можно использовать команду systemctl list-units:
systemctl list-units
Эта команда выведет список всех юнитов, их текущее состояние (loaded, active, sub) и описание. Состояние "active" означает, что юнит запущен и работает. Чтобы отфильтровать список и отобразить только запущенные юниты, можно использовать опцию --state=active:
systemctl list-units --state=active
Для просмотра информации о конкретном юните, например, службе "nginx.service", можно использовать команду systemctl status:
systemctl status nginx.service
Эта команда выведет подробную информацию о службе nginx, включая ее состояние, PID основного процесса, использование ресурсов и последние логи. Если служба не запущена, команда покажет соответствующее сообщение. Чтобы получить список процессов, связанных с конкретным юнитом, можно использовать команду systemd-cgls (Control Group List):
systemd-cgls
Эта команда выведет список всех контрольных групп (cgroups) Systemd и связанных с ними процессов. Для фильтрации по конкретному юниту можно указать его имя:
systemd-cgls nginx.service
Эта команда выведет список процессов, связанных со службой nginx. Другой способ получить информацию о процессах, управляемых Systemd, – использовать команду ps в сочетании с фильтрацией по cgroup. Каждый юнит Systemd имеет свою собственную cgroup, и можно использовать эту информацию для фильтрации процессов. Чтобы узнать cgroup для службы nginx, можно использовать команду:
systemctl show nginx.service | grep ControlGroup
Эта команда выведет строку, содержащую cgroup для службы nginx. Например, вывод может быть таким:
ControlGroup=/system.slice/nginx.service
Затем можно использовать эту информацию для фильтрации процессов с помощью команды ps и grep:
ps axjf | grep '/system.slice/nginx.service'
Эта команда выведет список процессов, связанных со службой nginx. Пример: Допустим, вы хотите перезапустить службу Apache и проверить, что все процессы, связанные с ней, были корректно перезапущены. Сначала перезапустите службу:
sudo systemctl restart apache2.service
Затем проверьте статус службы:
systemctl status apache2.service
И, наконец, убедитесь, что все процессы были корректно перезапущены, просмотрев список процессов, связанных со службой:
systemd-cgls apache2.service
Совет эксперта: Systemd также предоставляет возможность мониторинга ресурсов, используемых юнитами, с помощью команды systemd-cgtop. Эта команда отображает список юнитов, отсортированных по использованию CPU и памяти, что позволяет быстро выявить юниты, потребляющие больше всего ресурсов. systemd-cgtop может не быть установлен по умолчанию и может потребовать установки отдельного пакета.