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
Мониторинг запущенных процессов с помощью командной строки выглядит следующим образом:
- Откройте окно терминала.
- На удалённом сервере используйте доступ по ssh для входа в систему.
- Введите ps aux или ps -e, чтобы увидеть все запущенные процессы в Linux.
- В качестве альтернативы можно выполнить top или htop.
Рассмотрим подробнее некоторые примеры использования этих команд.
Утилита ps
Команда ps — это традиционный способ вывода списка запущенных процессов. К примеру, следующие команды показывают активные процессы на вашем сервере или в системе Linux:
ps -aux
ps -a
Число во второй колонке — идентификатор (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]
Команда 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 и т. п.
Читайте в блоге: