Управление процессами и задачами в Linux: команды ps, top, kill и др.

Управление процессами и задачами в Linux: команды ps, top, kill и др.

Life-Hack - Linux/Хакинг/Хакер/ИБ/Osint

 Один из ключевых аспектов работы в Linux - управление процессами и задачами. Команды ps, top, kill и другие инструменты позволяют получить информацию о текущих процессах, управлять ими и оптимизировать работу системы. В этой статье мы рассмотрим основные команды для управления процессами и задачами в Linux, их основные возможности и примеры использования.

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

top

Самый простой способ узнать, какие процессы запущены на сервере в данный момент, – использовать команду top

top

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

Можно увидеть, что 1 процесс запущен, а 55 процессов находятся в режиме ожидания (иначе говоря, простаивают, не используя ресурсы процессора).

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

htop

Усовершенствованная версия команды top под названием htop доступна в хранилищах. Чтобы установить ее, используйте данную команду:

sudo apt-get install htop

Запустив команду htop, можно увидеть более удобное для пользователя отображение информации:

htop

ps

Для получения списка процессов:

ps

Эти данные отображают все процессы, связанные с текущим пользователем и терминальной сессией. Это имеет смысл, так как в данный момент с терминала запущены только команды bash and ps.

Чтобы получить более полную картину процессов данной системы, можно запустить следующее:

ps aux

Эти параметры приказывают ps показать процессы, принадлежащие всем пользователям (вне зависимости от их терминала) в удобном формате.

Чтобы увидеть дерево, отображающее иерархические отношения, можно запустить команду с данными параметрами:

ps axjf

В Linux и Unix-подобных системах каждому процессу присвоен идентификатор (PID). Таким образом операционная система идентифицирует и отслеживает процессы.

Быстрый способ узнать PID процесса – использовать команду pgrep:

pgrep bash

Это запросит идентификатор процесса и вернет его.

Первый порожденный при запуске процесс под названием init получает PID «1». Данный процесс отвечает за порождение всех остальных процессов системы. Чем позже порожден процесс, тем больше будет присвоенный ему PID.

Родительский процесс – это процесс, ответственный за порождение другого процесса. Если порождающий процесс был прекращен, то дочерние процессы также прервутся. PID родительского процесса называется PPID. PID и PPID можно увидеть в заголовках столбцов во многих приложениях управления процессами, включая top, htop и ps.

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

Все процессы в Linux отвечают на сигналы. Сигналы – способ завершить или изменить поведение программ на уровне ОС. Наиболее распространенным способом передачи сигналов программам является команда kill.

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

kill PID_of_target_process

Это отправит процессу сигнал TERM. Данный сигнал приказывает процессу завершиться. Это позволяет программе выполнять операции по очистке и завершить работу без помех. Если программа неисправна и не завершает работу при отправке сигнала TERM, можно усилить сигнал, передав сигнал KILL

kill -KILL PID_of_target_process

Данный специальный сигнал отправляется не программе. Вместо этого он передается ядру операционной системы, которое прерывает процесс. Это используется для блокировки программ, которые игнорируют сигналы, посылаемые им.

Каждый сигнал имеет ассоциированный номер, который можно передать вместо имени. К примеру, можно отправить «-15» вместо «-TERM» и «-9» вместо «-KILL».

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

sudo kill -HUP pid_of_apache

Вышеприведенная команда заставит Apache перезагрузить конфигурационный файл и возобновить обслуживание контента.

Чтобы просмотреть список всех сигналов, которые можно отправить с kill, наберите:

kill -l

Команда pkill работает почти также, как kill, но она действует от имени процесса:

pkill -9 ping

Чтобы послать сигнал каждому экземпляру определенного процесса, используйте команду killall:

killall firefox

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

Linux контролирует приоритеты с помощью значения под названием niceness. Задачи с высоким приоритетом имеют низшее значение nice, так как они поглощают ресурсы. С другой стороны, задачи с низким приоритетом имеют высокое значение nice, так как они используют минимальное количество ресурсов. При запуске команды top в начале статьи был выведен столбец, отмеченный как «NI». В нем указывается значение nice процесса.

Чтобы запустить программу с определенным значением nice, можно использовать команду nice:

nice -n 15 command_to_execute

Это работает только при запуске новой программы.

Чтобы изменить значение nice программы, которая уже выполняется, нужно использовать инструмент renice:

renice 0 PID_to_prioritize

Примечание: в то время как nice работает с именем команды, renice вызывает PID процесса.

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

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


Report Page