Процессы Linux. Управление процессами. Часть 1: Мониторинг. Часть 2
Life-Hack [Жизнь-Взлом]/ХакингНайдя в дереве (да и любым другим способом тоже) нужный нам процесс, в большинстве случаев необходимо получить по нему более развёрнутую информацию. В особенности нам нужен будет его PID, чтобы работать именно с тем процессом с которым нужно и не наворотить делов.
Получить данные по конкретному процессу можно используя ту же утилиту ps, отфильтровав результаты с помощью команды grep. Например:
ps aux | grep -v grep | grep NetworkManager
Обрати внимание что я удалил из выдачи (-v) саму команду grep. Она будет в результатах потому что grep активна во время выполнения ps. Но так как мы её сами и запускаем, то смотреть на неё нам не интересно. Этого можно не делать, но так, типа прикольнее, мы получает только тот результат который нужен и ничего лишнего.
Если нам нужно увидеть только PID процесса, то для этого есть утилита pgrep.
pgrep NetworkManager

Иногда есть необходимость узнать какие процессы используют какой-то файл или каталог. Для этого существует команда fuser. После которой нужно ввести нужный нам путь. Например:
fuser -v /home/dspulse

Таким способом мы увидим все процессы Linux использующие домашний каталог пользователя dspulse. Если ввести команду без параметра -v, то мы увидим только PID процессов получивших доступ.
Процессы Linux. Утилита TOP
Команда ps конечно очень полезна, но есть нюанс. Принцип её работы в том, что она делает снимок состояния системы и выводит на экран результат, актуальный на момент когда был сделан снимок. И пока ты будешь тупить в список процессов, ситуация в твоей системе изменится. Поэтому, для того чтобы контролировать активность процессов, существуют утилиты для мониторинга.
Самый базовый, но не самый удобный вариант, это использование команды top. Начнём мы именно с неё чтобы было понимание как это работает.
top

После запуска мы увидим общую сводку по использованию ресурсов системы и список активных процессов. Причём наиболее активные будут вверху. По умолчанию этот список будет обновляться каждые три секунды. Чтобы изменить этот параметр нажми клавишу D.
Колонки по умолчанию немного отличаются от тех что мы видели в ps:
- PID — идентификатор процесса;
- USER — имя пользователя, от имени которого выполняется процесс;
- PR — приоритет планировщика, установленный для процесса;
- NI — рекомендуемый приоритет процесса;
- VIRT — память которая используется или зарезервирована для использования;
- RES — всё, что находится в оперативной памяти и относится к процессу;
- SHR — часть памяти из RES, которую занимают ресурсы, доступные для использования другим процессам;
- S — состояние процесса, используются те же значения что и в ps;
- %CPU — процент использования ресурсов процессора;
- %MEM — процент использования ресурсов оперативной памяти на основе колонки RES;
- TIME — обще процессорное время, которое процесс использовал с момента запуска;
- COMAND — команда, с помощью которой был запущен процесс.
При этом, удобно то, что набор колонок можно поменять под свои нужны. Для этого нажимаем клавишу F и пробелом выбираем нужные колонки.
Если какой-то процесс нам не нравится или мешает, мы можем его остановить. Для этого жмём клавишу K и вводим PID нужного процесса. Затем нас спросят какой сигнал отправить процессу. Так как в этом рассказе до сигналов я ещё не дошёл, пока просто запомни, что в большинстве случаев нужно отправлять сигнал 15. Но если процесс отказывается завершаться то сигнал 9.
Процессы Linux. Утилита HTOP
Более удобный и практичный вариант монитора процессов это утилита htop. Она более наглядней и симпатичней оформлена. Ну и настроить её под свои задачи можно намного точнее. Но для начала её нужно установить:
sudo apt install htop htop

Колонки здесь, по умолчанию те же что и в топ. Снизу мы видим список горячих клавиш. Чтобы настроить под свои хотелки, жмём F2 и выбираем нужные параметры. С остальными горячими клавишами я думаю тоже понятно из их названий.
Gnome System Monitor
Ну и список утилит мониторинга процессов был бы не полным без упоминания Gnome System Monitor. Это тоже самое но с графическим интерфейсом. (если у тебя KDE то там KDE System Guard).
Запустить его можно либо выбрав в меню, либо написав в терминале:
gnome-system-monitor

В меню можно выбрать что именно мы сейчас хотим видеть. Либо активные процессы, либо вообще все процессы, ну или процессы текущего пользователя. Также можно включить отображение дерева процессов. Отдельно есть вкладка для мониторинга использования ресурсов компьютера. Если в меню нажать «Поиск открытых файлов» то можно увидеть какие файлы какими процессами используются.
На этом, в принципе, первую часть рассказа про процессы можно заканчивать. Теперь ты знаешь что такое процессы в Linux и как их находить. Осталось только научится их контролировать. И именно этим мы займёмся в следующей статье на эту тему. А точнее разберем жизненный цикл процесса, узнаем про сигналы, приоритеты, разберемся с системными процессами и потоками ядра, а также научимся этим всем управлять. А потому не забывай возвращаться к нам.