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

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

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

Рассказываем, какие инструменты для этого понадобятся, а также как управлять процессами и завершать их.

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

Эта инструкция актуальна для операционных систем AlmaLinux, Alpine, Arch, Debian, Fedora, LinuxMint, openSUSE, Pop!_OS, RHEL, Rocky, Stream, SUSE, Ubuntu, WSL. Для выполнения всех описанных действий нужны права root.

Выбирайте для своих веб-проектов надёжного провайдера, которому можно поручить настройки и администрирование сервера. Аренда VPS от AdminVPS — это:

  • быстрые NVMe-диски,
  • быстрая техподдержка,
  • защита от DDoS-атак,
  • доступная цена,
  • опция «Всё включено», которая позволит сэкономить на найме технического специалиста, ведь мы полностью возьмём на себя администрирование сервера.

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

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

  1. Откройте окно терминала.
  2. На удалённом сервере используйте доступ по ssh для входа в систему.
  3. Введите ps aux или ps -e, чтобы увидеть все запущенные процессы в Linux.
  4. В качестве альтернативы можно выполнить top или htop.

Рассмотрим подробнее некоторые примеры использования этих команд.

Утилита ps

Команда ps — это традиционный способ вывода списка запущенных процессов. К примеру, следующие команды показывают активные процессы на вашем сервере или в системе Linux:

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

Число во второй колонке — идентификатор (PID). Он необходим для завершения процесса или управления им. Например, рассмотрим следующие выходные данные:

root     1  0.0  0.0 225868  9760 ?   Ss   19:10   0:13 /sbin/init splash

В этой строке:

  • root — пользователь, от имени которого произошёл запуск;
  • 1 — PID (идентификатор);
  • 19:10 — время запуска;
  • 0:13 — продолжительность активности;
  • /sbin/init splash — фактический процесс или команда.

Возможно, в выведенной таблице будет слишком много строк, поэтому используйте команды less или more для конвейерного отображения по одному элементу списка за раз:

ps -aux | more
ps -aux | less

Нажмите q, чтобы выйти из указанного выше режима просмотра.

Вы можете выполнить поиск определённого процесса Linux с помощью команд grep и egrep:

ps aux | grep firefox
ps aux | grep vim
ps -aux | egrep 'sshd|openvpn|nginx'

Параметр -a передаёт ps задание исключить лидеров сеансов и процессы, не связанные с терминалом. Лидер сессии — это активный процесс, запускающий другие процессы (его PID = SID).

Опция -d исключает только лидеров сессии.

Также вы можете передать -A или , чтобы просмотреть весь список без исключений.

Таким образом, чтобы увидеть каждый процесс в системе «Линукс» с использованием стандартного синтаксиса, подойдут: 

ps -e

Вывод списка в полном формате с помощью добавления -f:

ps -ef

Вывод расширенных данных (самый полный формат):

ps -eF

Long-format с опцией -l:

ps -el

Дополнительные опции:

  • -p — поиск по PID;
  • -С — по COMMAND NAME;
  • -G — по ID группы GID;
  • —ppid — по родительскому PID;
  • -s — по ID сессии;
  • -t — по телетайпу;
  • -u и -U — по UID (userID).

Подсчёт запущенных процессов

Для подсчёта подойдёт команда wc:

ps -e | wc -l
ps aux | wc -l

Чтобы получить отформатированный вывод, применяйте echo или printf следующим образом:

echo "User $USER has a total of $(ps -e | wc -l) processes running on $HOSTNAME."

Или:

printf "User $USER has a total of $(ps -e | wc -l) processes running on $HOSTNAME.\n"

Вывод:

User [USERNAME] has a total of ‘X’ processes running on [HOSTNAME]

Утилита pgrep

Многие дистрибутивы Linux поставляются с утилитой pgrep для просмотра или поиска процессов. Её синтаксис:

pgrep <process>
pgrep sshd
pgrep vim
pgrep firefox
pgrep -l nginx

В последнем примере параметр -l передаётся pgrep для отображения длинного формата.

Утилита top

Top — один из самых необходимых методов мониторинга использования ресурсов на серверах Linux. Top выводит список основных процессов, которые используют больше всего оперативной памяти, ресурсов процессора и накопителя информации.

Синтаксис:

top
sudo top
top [options]
Мониторинг использования ресурсов
Мониторинг использования ресурсов

Нажмите q, чтобы выйти из сеанса top, или h, чтобы вызвать справку.

Директива htop — проверка запущенных процессов в Линукс

Утилита htop — это приложение для интерактивного просмотра процессов, которое также рекомендуется для администраторов Linux. Как и top, htop формирует список наиболее «прожорливых» процессов:

htop
sudo htop
htop [options]
Использование утилиты htop
Использование утилиты htop

Команда kill в Linux

Если необходимо завершить процесс, применяйте kill; синтаксис:

kill [pid]
kill -signal [pid]

Предварительно найдите PID с помощью ps, pgrep или top. Допустим, нужно завершить процесс с PID #16755, выполните:

kill 16755

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

kill -9 16755

Или:

kill -KILL 16755

Команда pkill

Для завершения по имени, используйте команду pkill. Синтаксис:

pkill [processName]

Например:

pkill vim
pkill firefox
pkill -9 emacs
pkill -KILL php7-fpm

Команда killall

Директива killall, как и pkill, завершает процессы по имени, в отличие от выбора по PID (как это делает kill):

killall vim
killall -9 emacs

Директивы nice и renice

Основная цель команды nice — запустить процесс с более низким или более высоким приоритетом. Используйте renice, чтобы изменить значение nice одного или нескольких запущенных процессов Linux. Значение nice может находиться в диапазоне от -20 до 19, где 19 — самый низкий приоритет. Допустим, необходимо скомпилировать программное обеспечение на загруженном сервере Linux. Чтобы установить низкий приоритет, введите:

nice -n 13 cc -c *.c &

Установка высокого приоритета:

nice --10 wall

В этом примере команда wall будет выполнена с очень высоким приоритетом, что может замедлить работу системы в целом. 

Чтобы изменить приоритет, введите следующее:

renice [Priority] -p [PID]
renice [Priority] [PID]

Пример:

pgrep vim
renice 10 69947
renice -10 $(pgrep vim)

Теперь вы знаете, как просматривать процессы в терминале Linux с помощью инструментов ps, pgrep, top, htop и дополнительных опций, а также как управлять ими, используя kill, pkill, killall, nice и renice. Чтобы получить дополнительную информацию, просмотрите мануалы каждой из команд, например, man ps, man top и т. п.

Читайте в блоге:

Что будем искать? Например,VPS-сервер

Мы в социальных сетях