Как управлять и как завершить 1 или группу процессов. Чтобы правильно управлять процессами и ориентироваться в них, как анализировать список процессов Linux, значение каждого элемента и причины, по которым он необходим, как просматривать список процессов по-разному, как анализировать, что это за процесс, почему это происходит и как с этим бороться. Мы рассмотрим это поближе.
Список процессов в Linux
Мы не будем подробно рассказывать про каждую команду, которая может быть использована для отображения списка запущенных процессов. Вместо этого мы решим эту задачу с помощью основной утилиты и рассмотрим, как отобразить список потоков процесса, вывести процессы, запущенные на определенном ядре, и найти скрытые процессы. Но сначала нам нужно разобраться с терминами.
- Дочерний процесс — Процесс может запускать другие процессы для выполнения параллельных задач или запускать такие процессы для других целей, называемых дочерними процессами. Им выделяется отдельная область памяти;
- Потоки — Потоки отличаются от процессов тем, что они используют те же дескрипторы памяти, данных и файлов, что и созданный процесс.
- Процесс — заключается в загрузке программы и ее данных в память компьютера.
1. Утилита ps
Самый простой способ посмотреть список процессов, запущенных в текущей командой оболочке, использовать команду ps без параметров:
ps
Но вряд-ли вас интересует именно это. Чтобы посмотреть все процессы, добавьте опцию -e, а для максимально подробной информации — опцию -F:
ps -eF
Вот значение основных колонок в выводе утилиты:
- UID— имя пользователя, от имени которого работает процесс;
- PID— идентификатор пользователя;
- PPID— идентификатор родительского процесса;
- C— расходование ресурсов процессора, в процентах;
- SZ— размер процесса;
- RSS— реальный размер процесса в памяти;
- PSR— ядро процессора, на котором выполняется процесс;
- STIME— время, когда процесс был запущен;
- TTY— если процесс привязан к терминалу, то здесь будет выведен его номер;
- TIME— общее время выполнения процесса (user + system);
- CMD— команда, которой был запущен процесс, если программа не может прочитать аргументы процесса, он будет выведен в квадратных скобках;
Чтобы посмотреть список процессов в виде дерева, и понимать какой процесс имеет какие дочерние процессы, выполните команду:
ps -efL
Здесь появятся ещё две дополнительные колонки:
- LWP— Это сокращение отLightWeightProccess. Идентификатор потока;
- NLWP— количество потоков у этого процесса.
Чтобы посмотреть список процессов определенного пользователя, например, root используйте опцию-u:
ps -fu root
Теперь давайте перейдём к другим, более интересным, интерактивным утилитам.
2. Утилита top
Утилита top не поставляется вместе с системой, поэтому вам придется её установить. Для этого в Ubuntu выполните:
sudo apt install top
Программа позволяет интерактивно просматривать список запущенных процессов Linux. Чтобы вывести список процессов Linux выполните команду:
top
Колонки, которые выводит программа очень похожи на ps:
- PID— идентификатор процесса;
- USER— имя пользователя, от имени которого выполняется процесс;
- PR— приоритет планировщика, установленный для процесса;
- NI— рекомендуемый приоритет процесса. Это значение можно менять, может не совпадать с реальным приоритетом планировщика;
- VIRT— всё, что находится в памяти, используется или зарезервировано для использования;
- RES— всё, что находится в оперативной памяти и относится к процессу. Расшифровывается какResident Memory Size, указывается в килобайтах;
- SHR— часть памяти из RES, которую занимают ресурсы, доступные для использования другим процессам. Расшифровывается —Shared Memory Size.
- S— состояние процесса: D — ожидает завершения операции, R — запущен, S — спит, T — остановлен, t — остановлен отладчиком, Z — зомби;
- %CPU— процент использования ресурсов процессора;
- %MEM— процент использования ресурсов оперативной памяти на основе колонкиRES;
- TIME— обще процессорное время, которое процесс использовал с момента запуска;
- COMAND— команда, с помощью которой был запущен процесс.
Для того чтобы сделать вывод программы цветным, нажмитеZ:
Чтобы вывести дерево процессов Linux нажмите сочетание клавиш Shift+V:
Для отображения потоков нажмите Shift + H:
Если вам недостаточно стандартных полей с информацией о процессах, вы можете нажатьShift + F и выбрать дополнительные поля, которые надо отображать. Для выбора или удаления поля используйте пробел:
3. Утилита htop
Это ещё более мощная утилита для просмотра запущенных процессов в Linux. Пользоваться ею намного удобнее. Здесь поддерживаются не только горячие клавиши, но и управление мышью. А ещё она выводит всё в цвете, поэтому смотреть на данные намного приятнее. Для установки программы выполните:
sudo apt install htop
Для того чтобы запустить выполните в терминале:
htop
Колонки, которые вы увидите в выводе программы, аналогичны тем, что доступны в top, поэтому я не буду рассматривать их здесь отдельно. Для настройки выводимых данных нажмите кнопку F2, затем перейдите в раздел Display Options:
Здесь надо отметить Tree view для вывода списка процессов в виде дерева, а также снять отметки с пунктов Hide threads… для отображения потоков. Здесь есть как потоки пространства пользователя userland process threads, так и потоки пространства ядра — kernel threads. Теперь всё это будет отображаться. Для того чтобы настроить какие колонки будут отображаться используйте пункт меню Columns