Продолжаем развивать наши навыки по работе с Linux. В этой статье мы рассмотрим системные процессы и управление ими.

В Linux процессами называют программы, которые уже работают и находятся в оперативной памяти. Обычно в наших компьютерах выполняются сотни процессов одновременно. Если они являются системными, то линуксоиды называют их демонами (от слова daemon или demon). Часто можно видеть, что название процесса заканчивается на букву «d», например, httpd — процесс или демон, который отвечает за работу службы http.

Шаг 1. Как узнать какие процессы сейчас запущены

Мы можем посмотреть на все запущенные процессы, если в консоли выполним команду:

ps aux

Флаги этой команды обеспечивают вывод информации обо всех процессах (a — all), пользователе (u — user), и процессах, не связанных ни с одним открытым терминалом (x — executed). Это мой любимый набор флагов для команды ps, поскольку он позволяет видеть, какой пользователь запустил тот или иной процесс, и сколько он потребляет ресурсов.

Обратите внимание, что каждый из перечисленных процессов дополнен большим объемом информации.

user — пользователь

PID — идентификатор процесса (process identifier)

%CPU — % потребления ресурсов центрального процессора

%RAM — % потребления оперативной памяти

Если нам нужно увидеть все процессы с ограниченной дополнительной информацией, то достаточно ввести в консоль:

ps -A


Теперь мы видим все запущенные процессы, но без данных о расходовании ресурсов CPU и оперативной памяти. Обратите внимание, что airbase-ng в списке имеет PID 5143, а последним процессом является как раз команда ps.
Номера процессов или PID крайне важны для работы в Linux, поскольку чаще всего для управления каким-нибудь процессом нужно знать его PID. Вы могли читать в материалах по Metasploit, что PID процесса становится критически важным для взлома системы жертвы.

Шаг 2. Команда top

Команда top похожа на ps, за исключением того, что top показывает только те процессы, которые потребляют большинство ресурсов. Он показывает динамическую информацию, т.е. происходящую в реальном времени. Просто введите в консоли:

top


Как видите, все процессы отсортированы в порядке убывания потребления ресурсов. При этом содержание списка постоянно меняется по мере того, как процессы начинают потреблять больше или меньше ресурсов.

Шаг 3. Как «убить» процесс

Иногда нам нужно остановить процессы в Linux. Команда, которую мы при этом выполняем, называется kill. Она очень полезна в тех ситуациях, когда есть процесс, который продолжает работать и использовать системные ресурсы, даже после того, как мы попытались его остановить. Эти процессы иногда называются зомби-процессами.
Мы можем убить любой процесс, просто набрав kill и идентификатор процесса (PID). Например, чтобы убить мой airbase-ng, я могу просто напечатать:

kill 5143


На скриншоте видно, что процесс airbase-ng был остановлен.
Существует много типов «убийств». Работа команды kill по умолчанию (когда мы используем команду kill без дополнительных параметров) — это kill 15 или сигнал завершения. Это позволяет процессу осторожно закончить работу.
Иногда при выполнении команды kill с параметрами по умолчанию, процессы по-прежнему отказываются прекращать работу. В этом случае мы должны использовать настоящего терминатора — kill-9, который пленных не берет и отдает приказ ядру Linux немедленно прекратить работу этого процесса.

Шаг 4. Изменение приоритета процесса

Каждому процессу в Linux присваивается номер приоритета. Этот номер определяет, насколько важен процесс и где он находится в списке с точки зрения использования системных ресурсов. Номера варьируются от 0 до 127, где 0 — наивысший приоритет, а 127 — самый низкий.
Даже будучи пользователем root или системным администратором, мы не можем напрямую определить приоритет процесса, поскольку это работа ядра. Но мы можем намекнуть ядру, что хотели бы, чтобы процесс работал с более высоким приоритетом. Это можно сделать с помощью команды nice. Значения nice варьируются от -20 до +19, где более низкие значения определяют более высокий приоритет.
Мы можем установить значение команды nice для процессов, используя параметр -n, потом значение nice, а затем команду, которую мы хотим запустить. Если мы хотим запустить наш airbase-ng процесс с наивысшим приоритетом, то нужно в консоли написать:

nice -n -20 airbase-ng

Чтобы уменьшить приоритет команды airbase-ng, нам нужно использовать команду renice. Команда renice требует просто указать уровень приоритета и только PID процесса (в отличие от команды nice). Например:

renice 15 5143


Теперь видно, что применение команды renice уменьшило приоритет airbase-ng с -20 (наивысшего) до 15 (сравнительно низкого).

Шаг 5. Перенос процесса в фоновый режим

Когда мы запускаем команду из терминала, запущенный процесс начинает контролировать данный терминал, вплоть до тех пор, пока этот процесс не будет завершен. Если это непрерывный процесс, похожий на работу airbase-ng, то он будет удерживать контроль, пока мы его не остановим. И до этого времени мы не сможем использовать этот терминал.
Если мы хотим продолжать использовать конкретный терминал, то мы можем отправить запущенный процесс в фоновый режим, и затем вернуть себе контроль над терминалом. Для запуска команды в фоновом режиме нам нужно в конце команды добавить амперсанд — &. Чтобы запустить airbase-ng в фоновом режиме, команда будет выглядеть так:

airbase-ng -a 00:09:5B:6F:64:1E --essid "Elroy" -c 11 mon0 &

Если нужно «вытащить» команду из фонового режима обратно, просто вводим fg (от слова foreground — «передний план»). Чтобы перенести уже запущенный процесс в фоновый режим нужно нажать комбинацию клавиш Ctrl + Z — это завершит данный процесс. Затем использовать команды bg (от слова background — «задний план», фоновый режим) с указанием PID процесса и это передвинет его в фоновый режим.
Вот и все на сегодня…
Следите за обновлениями серии «Основы Linux». Если вы еще не видели другие статьи этого цикла, то обязательно почитайте ( 1, 2 , 3 , 4 , 5 , 6 , 7).

Отказ от ответственности: Эта статья написана только для образовательных целей. Автор или издатель не публиковали эту статью для вредоносных целей. Если читатели хотели бы воспользоваться информацией для личной выгоды, то автор и издатель не несут ответственность за любой причиненный вред или ущерб.
Показать больше в Хакинг

Оставить комментарий

Проверьте также

Основы Linux .Часть 14 ( MySQL )

С возвращением, мои желторотые хакеры! Продолжаем серию статей по Основам Linux и сегодня …