23.06.2025

Процессы в Linux: инструменты и управление

Основными сущностями, при работе с операционной системой являются процессы и потоки. Именно они определяют какой будет контекст выполнения у ПО и какие действия нужно будет произвести. В данном материале мы подробно ответим на вопросы.

Что такое процесс и поток? Зачем в ОС необходима система инициализации, такая как systemd? Какие можно использовать инструменты для работы c процессами? И как нарушители могут их эксплуатировать?

Что такое процесс и поток в Linux?

Процесс это абстрактная, пассивная сущность или же объект, который живет в ядре операционной системы и владеет атрибутами необходимыми для работы ПО. В основном это поля такие как:

Когда пользователь запускает утилиту, оболочка, в которой он находится, отправляет запрос на ядро, переходя из пользовательского пространства в пространство ядра с помощью системного вызова.

Скриншот №1 — Схема работы ОС

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

Какой цикл рождения у процессов в Linux?

При нехватке собственных мощностей можно воспользоваться облачными серверами от Serverspace, для этого перейдем к созданию сервера, на любой из двух платформ vStack cloud или же VMware cloud. Нажмем на кнопку Создать сервер и выберем конфигурацию, подходящую под наши задачи, затем нажмем кнопку Создать:

Скриншот №2 — Создание сервера

Важно понять принцип цикла рождения процессов в Linux. Всего существует один процесс, который запускается ядром, при загрузке – systemd. Остальные запускаются уже в формате родительского-дочернего процесса. Это значит, что при инициализации ПО systemd создает системный вызов fork(2), который буквально, говорит ядру, о том что нужно создать копию systemd. С такими же ресурсами, как и у него, поэтому пока память выделенная на работу остается такой же. После создания новому процессу присваивается PID и PPID или же id родительского процесса.

Чтобы из копии запущенного родительского процесса сделать “другую утилиту”, происходит внутри дочернего процесса системный вызов exec(), который требует у ядра заменить файлы в памяти на исполняемые файлы нового ПО. Более схематично можно увидеть последовательность на рисунке ниже.

Скриншот №3 — Схема рождения процесса

Таким образом, получается, что ветка запущенного ПО будет выглядеть иерархично: один процесс запустил другой. Но как это будет выглядеть, при подключении клиента к SSH-серверу для управления Linux? Или как понять, кто является зловредным процессом, который запустил скрипт? Рассмотрим уже с использованием утилиты htop, которую можно установить через пакетный менеджер:

apt install htop

Скриншот №4 — Установка htop

Запустим и просмотрим существующее дерево процессов через нажатие на F5:

Скриншот №5 — Дерево процессов

Обратите внимание на первую строчку, где указан процесс PID=1 – это и есть система инициализации systemd, от которой запускаются остальные дочерние процессы. Справа в столбце Command указано запущенное ПО и ветки, где одним из дочерних процессов от systemd является sshd.  А уже его дочерний процесс управляет удаленной SSH-сессией root@pts/0, где для управления системой была запущена оболочка bash, в которой сидит пользователь. И как раз снизу можем видеть нами запущенную утилиту htop с PID 499087.

Как проверить вредоносную активность в Linux?

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

w

Просто w позволит отобразить подключения к машине на текущий момент, а утилита:

last

Скриншот №6 — История входа в ОС

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

Если вы обнаружили подобную активность, то необходимо завершить соответствующие процессы, изолировать машину в сети и провести расследование. Первое действие решается утилитой kill:

kill -SIGKILL (pid)

Вместо (pid) укажите процесс, который должен быть завершен, после чего можно собирать логи и дампы ОЗУ с устройства. Именно понимание работы с процессами формирует полную картину, того как управлять и защищаться с помощью инструментов ОС.