Процессы

Killing a Zombie-Process

First, let us understand how zombie processes are a threat to our system’s performance. It is important to learn that zombies are dead and mostly completed processes that do not take memory or CPU resources. However, each of these processes has a unique process ID assigned to them which comes from a limited pool of PIDs reserved for your processor. If a large number of zombies gather, they will eat up most part of the PID pool and the new processes will not be able to launch due to lack of a process ID.Advertisement

A small number of defunct programs occupying your system is not a big threat but that means that their parent programs have not been able to call them off due to a bug or a missing wait() function.

When a parent process has not been able to call the wait() function automatically, we need to manually signal the parent process to run the wait function on all its children so the ones with a complete state can be called back. We can do this by running the SIGCHLD command. When that doesn’t work, we can manually kill the parent process so that all its zombie children are also killed, freeing the process IDs for the new processes.

You can kill the zombie processes through the following ways:

  • Through the Graphical User Interface
  • Through the Command Line

Through the GUI

You can kill a zombie process graphically through the System Monitor Utility as follows:

  1. Open the System Monitor utility through Ubuntu Dash.
  2. Search for the term Zombie through the Search button.
  3. Select the zombie process, right-click and then select Kill from the menu.

The zombie process will be killed from your system.

Through the Command Line

After you know that there any zombie processes running on your system through the top command, view the details of the processes.

The usual way is to use the following command that signals the zombie’s parent process to kill the command.

$ kill -s SIGCHLD PID

This command may not work in a few cases as not all parent processes are programmed properly in order check upon the child processes. In that case, you can kill the parent process through the following command:

$ sudo kill -9 3376

When you have killed all the zombie processes through this way and run the top command, you will be able to see that there are no zombie processes running on your system anymore:

After working along with this tutorial, you can optimize your operating system by looking for any zombie processes on your system and killing them manually through the command line or the graphical user interface. This act will free up process IDs for the new processes that you want to run on your system.

How to Kill Zombie Processes in Ubuntu 18.04 LTS

(4) Избегание зомби-процессов

  • Родительский процесс вызывает wait / waitpid и другие функции для ожидания окончания дочернего процесса,Если дочерний процесс не завершается, ожидание приведет к блокировке родительского процесса. Waitpid может передать WNOHANG, чтобы родительский процесс немедленно вернулся без блокировки.
  • Если вы не хотите, чтобы родительский процесс зависал, вы можете добавить оператор в родительский процесс: signal (SIGCHLD, SIG_IGN); означает, что родительский процесс игнорирует сигнал SIGCHLD и перерабатывается ядром. Этот сигнал отправляется родительскому процессу при выходе из дочернего процесса.
  • Если родительский процесс очень занят, вы можете использовать signal для регистрации функции обработки сигналов и вызвать wait / waitpid в функции обработки сигналов, чтобы дождаться завершения дочернего процесса.

вПараллельный серверОбычно используется второй способ,Игнорировать выход дочернего процесса и позволить ядру передать дочерний процесс зомби процессу init для обработки, Когда необходимо обработать большое количество зомби-процессов, они будут занимать системные ресурсы.

Плечи гигантов:https://www.cnblogs.com/wuchanming/p/4020463.html

(2) Цель зомби-процесса

Целью установки мертвого состояния является сохранение информации о дочернем процессе (идентификатор процесса, состояние завершения процесса и время ЦП, используемое процессом), чтобы родительский процесс мог получить ее позже. Если процесс завершается и какие-либо дочерние процессы этого процесса находятся в состоянии зомби, все дочерние процессы-зомби процесса становятся потерянными процессами. Все дочерние процессы в ядре Linux будут «приняты» процессом init после программирования этого процесса, и начальный процесс будет Очистите их (вызов инициализацииСнять их статус зомби).

23.9 Пример Создания Процесса

Вот пример программы, показывающий, как Вы могли бы написать
функцию, подобную встроенной системе. Она выполняет аргумент
command, используя » sh -c command «.

Не забудьте, что первый аргумент argv, представляет имя
выполняемой программы. Именно поэтому, в обращении к execl, SHELL
обеспечена один раз, чтобы назвать выполняемую программу, и второй
раз, чтобы обеспечить значение для argv .

Вызов execl в дочернем процессе не возвращается, если он
успешен. Если он терпит неудачу, Вы должен делать кое-что, чтобы
заставить дочерний процесс завершиться. Правильное поведение для
дочернего процесса — сообщить отказ родительскому процессу.

Вызовите _exit, чтобы выполнить это. Причина для использования
_exit вместо exit состоит в том, чтобы избежать flush полностью
буферизированных потоков типа stdout. Буфера этих потоков возможно
содержат данные, которые были скопированы из родительского процесса
функцией fork, эти данные будут выводиться в конечном счете
родительским процессом. Вызов exit в дочернем вывел бы данные
дважды. См. Раздел 22.3.5 .

ВпередНазад

Спонсоры:

Хостинг:

Maxim ChirkovДобавить, Поддержать, Вебмастеру

Кто использовал файл в Linux

Узнать процесс, который сейчас занимает файл, достаточно просто. Но как узнать, какой процесс обращается к файлу не надолго, например, выполняет его как программу или читает оттуда данные? Эта задача уже труднее, но вполне решаема с помощью подсистемы ядра auditd. В CentOS набор программ для работы с этой подсистемой поставляется по умолчанию, в Ubuntu же его придётся установить командой:

Теперь создаём правило для мониторинга. Например, отследим, кто запускает утилиту who:

Здесь -w — адрес файла, который мы будем отслеживать, -p — действие, которое нужно отслеживать, -k — произвольное имя для правила. В качестве действия могут использоваться такие варианты:

  • x — выполнение;
  • w — запись;
  • r — чтение;
  • a — изменение атрибутов.

Теперь выполним один раз who и посмотрим, что происходит в логе с помощью команды ausearch:

Здесь в секции SYSCALL есть PID процесса, под которым была запущена программа, а также PPID — программа, которая запустила нашу who. Копируем этот PID и смотрим информацию о нём с помощью ps:

Становиться понятно, что это bash.

Managing Processes Efficiently on Linux

Every system administrator must prioritize monitoring processes running on a Linux machine. Although zombie processes are not necessarily harmful to your system, they can cause performance issues if they exist in a large number.

If you’re a beginner Linux user and have no idea how the Linux operating system manages processes, learning what are processes first is a good place to start.

What Is a Process in Linux?

Understanding process and jobs is a key aspect to getting to grips with Linux. Here’s what you need to know.

Read Next

About The Author

Deepesh Sharma
(96 Articles Published)

Deepesh is the Junior Editor for Linux at MUO. He writes informational guides on Linux, aiming to provide a blissful experience to all newcomers. Not sure about movies, but if you want to talk about technology, he’s your guy. In his free time, you can find him reading books, listening to different music genres, or playing his guitar.

More
From Deepesh Sharma

Запуск программы

В оперативной памяти процесса находятся код и данные, загруженные из файла. При запуске программы из командной строки, обычно создается новый процесс и в его память загружается файл с программой. Загрузка файла делается вызовом одной из функций семейства exec (см. ). Функции отличаются способом передачи параметров, а также тем, используется ли переменная окружения PATH для поиска исполняемого файла. Например execl в качестве первого параметра принимает имя исполняемого файла, вторым и последующими – строки аргументы, передаваемые в argv[], и, наконец, последний параметр должен быть NULL, он дает процедуре возможность определить, что параметров больше нет.

Пример с двумя ошибками:

Ошибка 1:
Первый аргумент передаваемый программе это имя самой программы. В данном примере в списке процессов будет видна программа с именем -l, запущенная без параметров.

Ошибка 2:
Поскольку код из файла будет загружен в текущий процесс, то старый код и данные, в том числе будет затерты. Первый не сработает никогда.

Типы сигналов для завершения процессов

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

  1. SIGINT — стандартный сигнал, использующийся и в графических оболочках. При его отправлении процесс сохраняет все изменения, завершает выполняемые действия и только потом отключается. Если вы работаете через «Терминал», используйте комбинацию клавиш Ctrl + C, чтобы быстро «убить» текущий процесс.
  2. SIGQUIT — практически не отличается от предыдущего сигнала, но при его отправке программа уже сама решает, стоит ли завершать работу. При этом создается дамп памяти, что может быть полезно определенным пользователям. Это второй и последний сигнал, который можно послать сочетанием клавиш при взаимодействии с «Терминалом». Для этого используется комбинация Ctrl + /.
  3. SIGHUP — используется для разрыва связи с «Терминалом». Рекомендуется задействовать этот сигнал, если требуется прервать соединение с интернетом.
  4. SIGTERM — сразу же удаляет процесс, но его дочерние опции продолжают выполняться до полного завершения операций, а после производится освобождение системных ресурсов.
  5. SIGKILL — аналогичный предыдущему сигнал, но при этом оставшиеся дочерние задачи не прекращают свое функционирование.

Теперь вы знаете обо всех доступных сигналах, использующихся при «убийстве» процессов в разных дистрибутивах Linux. Используйте их вместе с приведенными в методах ниже командами в качестве аргумента.

Процесс init

При загрузке системы ядро создает особый процесс, который называется , «родитель всех процессов». Он ведет свое происхождение от программного файла . Все процессы в системе создаются (используя ) либо процессом , либо одним из его потомков. Процесс всегда имеет идентификатор процесса и запускается с правами до­ступа суперпользователя. Процесс не может быть уничтожен (даже привилегированным пользователем) и завершается только при завершении работы системы. Основной задачей является создание и слежение за процессами, требуемыми работающей системе. (По­дробности можно найти на странице руководства .)

What Are Zombie Processes?

But before all that, it is important that you know what zombie processes really are. These are nothing but dead and defunct processes that occupy space on the system process table. A process control block or PCB is a data structure that stores details associated with individual processes running on your system.

The process table consists of the process ID, a link to the PCB, and other useful information related to the process. Zombie processes have their own process IDs and memory management information. Since the Linux OS has a limited number of process IDs available, other processes can’t use the PIDs until the zombie process stops.

Although one or two zombie processes won’t cause any disruption or performance issues on your computer, a large number of such processes can harm your system’s workflow by flooding the process table and the resources.

Linux: процесс зомби

http-equiv=»Content-Type» content=»text/html;charset=UTF-8″>yle=»margin-bottom:5px;»>Теги:  Linux  Зомби процесс

Поколение зомби-процесса:

1. Когда родительский процесс не завершился, дочерний процесс завершился, и родительский процесс не получил статус завершения дочернего процесса. Дочерний процесс называется процессом зомби.

2. Выполнение процесса заканчивается, основная часть процесса (код выполнения, данные, ресурсы) освобождается, а его печатная плата не освобождается.

3. Сиротский процесс: после смерти родительского процесса процесс зомби становится «бесхозным процессом», который переходит в init

Лечение зомби-процесса:

Родительский процесс ожидает напрямую (NULL). Если процесс выполняется в состоянии блокировки, состояние процесса становится заблокированным. Если процесс выполняется в состоянии без блокировки, то есть, если условие не выполнено, он немедленно возвращается и возникает ошибка.

Интеллектуальная рекомендация

 …

1. Определите класс узла: 2. Класс реализации алгоритма: 3. Просмотрите двоичное дерево на следующем рисунке….

Последовательность развития 1. Создать сущность для реализации хозяйствующего субъекта. 2. Создайте IDAL для реализации интерфейса. 3. Создайте DAL для реализации методов в интерфейсе. 4. Увеличьте ин…

pinyin4j действительно сложно, вот простое приложение    …

Создать проект взломанная версия pycharm -> новый проект -> django. Project Interpreter использует среду New Virtualenv по умолчанию. settings.py Часовой пояс и язык Статические файлы Зарегистри…

Вам также может понравиться

1. Загрузите исходный код https://github.com/tzutalin/labelImg, После скачивания разархивируйте его. 2. Установите Python3.5. Не используйте 3.6! Не используйте 3.6! Не используйте 3.6! Пока что при в…

Я столкнулся с бизнес-сценарием в недавнем проекте: Перенесите таблицы из текущей базы данных в другую базу данных. Для обеспечения эффективности миграции требуется одновременная миграция данных. Для …

С развитием технологии виртуализации все больше и больше веб-проектов используют докер для развертывания и обслуживания. Мы попытались использовать docker-compose для организации веб-проекта, основанн…

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

23.1 Выполнение Команды

Простой способ выполнять другую программу состоит в том, чтобы
использовать функцию system. Эта функция делает всю работу
выполнения подпрограммы, но она не дает Вам контроля над
подробностями: Вы должны ждать, пока подпрограмма не завершится
прежде, чем Вы сможете делать что-нибудь еще.

Функция system объявлена в заглавном файле » stdlib.h «.

Примечание Переносимости: Некоторые реализации C могут не иметь
понятие командного процессора, который может выполнять другие
программы. Вы можете определить, существует ли командный процессор,
выполняя system (NULL); если возвращаемое значение отлично от нуля,
командный процессор доступен.

Popen и pclose функции (см. Раздел 10.2 ) близко связаны функцией system. Они позволяют
родительскому процессу связываться со стандартным вводом и выводом
выполняемой команды.

Отслеживание активных процессов

Существует несколько различных инструментов для просмотра/перечисления запущенных в системе процессов. Двумя традиционными и хорошо известными из них являются команды ps и top:

Команда ps

Отображает информацию об активных процессах в системе, как показано на следующем скриншоте:

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

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

   UID — идентификатор пользователя, которому принадлежит процесс (тот, от чьего имени происходит выполнение).

   PID — идентификатор процесса.

   PPID — идентификатор родительского процесса.

   C — загрузка CPU процессом.

   STIME — время начала выполнения процесса.

   TTY — тип терминала, связанного с процессом.

   TIME — количество процессорного времени, потраченного на выполнение процесса.

   CMD — команда, запустившая этот процесс.

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

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

    — показывает информацию о процессах по всем пользователям;

    — показывает информацию о процессах без терминалов;

    — показывает дополнительную информацию о процессе по заданному UID или имени пользователя;

    — отображение расширенной информации.

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

Обратите внимание на выделенный заголовок. Команда поддерживает функцию сортировки процессов по соответствующим столбцам

Например, чтобы отсортировать список процессов по потреблению ресурсов процессора (в порядке возрастания), введите команду:

Результат:

Если вы ходите выполнить сортировку по потреблению памяти (в порядке убывания), то добавьте к имени интересующего столбца знак минуса:

Результат:

Еще один очень популярный пример использования команды — это объединение её и для поиска заданного процесса по его имени:

Результат:

Команда top

Команда top отображает информацию о запущенных процессах в режиме реального времени:

Рассмотрим детально:

   PID — идентификатор процесса.

   USER — пользователь, которому принадлежит процесс.

   PR — приоритет процесса на уровне ядра.

   NI — приоритет выполнения процесса от до .

   VIRT — общий объем (в килобайтах) виртуальной памяти (физическая память самого процесса; загруженные с диска файлы библиотек; память, совместно используемая с другими процессами и т.п.), используемой задачей в данный момент.

   RES — текущий объем (в килобайтах) физической памяти процесса.

   SHR — объем совместно используемой с другими процессами памяти.

   S (сокр. от «STATUS») — состояние процесса:

   S (сокр. от «Sleeping») — прерываемое ожидание. Процесс ждет наступления события.

   I (сокр. от «Idle») — процесс бездействует.

   R (сокр. от «Running») — процесс выполняется (или поставлен в очередь на выполнение).

   Z (сокр. от «Zombie») — зомби-процесс.

   %CPU — процент используемых ресурсов процессора.

   %MEM — процент используемой памяти.

   TIME+ — количество процессорного времени, потраченного на выполнение процесса.

   COMMAND — имя процесса (команды).

Также в сочетании с основными символами состояния процесса (S от «STATUS») вы можете встретить и дополнительные:

    — процесс с высоким приоритетом;

    — процесс с низким приоритетом;

    — многопоточный процесс;

    — фоновый процесс;

    — лидер сессии.

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

Команда glances

Команда glances — это относительно новый инструмент мониторинга системы с расширенными функциями:

Примечание: Если в вашей системе отсутствует данная утилита, то установить её можно с помощью следующих команд:

RHEL/CentOS/Fedora

Debian/Ubuntu/Linux Mint

23.6 Завершение Процесса

Функции, описанные в этом разделе используются, чтобы ждать
завершения или останова дочернего процесса и определять его
состояние. Эти функции объявлены в заглавном файле » sys/wait.h «.

Другие значения для pid аргумента имеют специальные
интерпретации. Значение -1 или WAIT_ANY информация состояния для
любого дочернего процесса; значение 0 или WAIT_MYPGRP запрашивает
информацию для любого дочернего процесса в той же самой группе
процесса как вызывающий процесс; и любое другое отрицательное
значение — pgid запрашивает информацию для любого дочернего
процесса, чей ID группы — pgid.

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

Чтобы получить состояние других готовых продолжиться дочерних
процессов, Вы должны вызвать waitpid снова.

Аргумент options — битовая маска. Значение должно быть
поразрядным ИЛИ (то есть `|’) нуля или большого количества WNOHANG
и WUNTRACED флагов. Вы можете использовать WNOHANG флаг, чтобы
указать, что родительский процесс не должен ждать; и WUNTRACED
флаг, чтобы запросить информацию состояния остановленных процессов
также как процессов, которые завершились.

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

Возвращаемое значение — обычно ID дочернего процесса, о чьем
состояние сообщено. Если WNOHANG опция была определена и никакой
дочерний процесс, не ждет, чтобы быть отмеченным, то значение —
нуль. Значение -1 возвращено в случае ошибки. Следующие errno
ошибки определены для этой функции:

EINTR

Функция была прервана получением сигнала. См. Раздел 21.5
.

ECHILD

Не имеется никаких дочерних процессов, или заданный pid не
дочерний для вызывающего процесса.

EINVAL

Недопустимое значение аргумента options.

Эти символические константы определены как флаги для аргумента
options функции waitpid.

Вы можете сделать OR флагов вместе, чтобы получить значение, и
использовать его как аргумент.

Как найти процессы зомби?

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

Во-первых, вам нужно проверить, есть ли в таблице процессов вашей системы зомби-процесс. Вы можете легко это сделать, используя команду top . Просто откройте свой терминал и введите:

Вы увидите результат, похожий на этот

Обратите внимание на количество процессов-зомби в верхней части окна терминала. Если результат равен нулю, вам не о чем беспокоиться

Вы можете перечислить информацию, относящуюся к этим зомби-процессам, выполнив команду ps с помощью egrep . Egrep – это расширение команды grep в Linux, которая обрабатывает все шаблоны как расширенную строку регулярного выражения.

Введите следующую команду, чтобы вывести список всех зомби-процессов:

Вышеупомянутая команда будет искать строки, содержащие Z или несуществующие в выводе, созданном командой ps. Вывод состоит из списка процессов-зомби, запущенных в вашей системе.

Что вызывает зомби-процессы в Linux?

Чтобы подробно понять основную причину зомби-процесса, вам нужно узнать, как процессы запускаются и останавливаются в Linux. Операционная система Linux контролирует все запущенные процессы и демоны на компьютере. Таблица процессов – это список структур, содержащий все процессы, которые в данный момент выполняются на вашем компьютере.

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

  1. Состояние процесса : текущее состояние процесса.
  2. Номер процесса : уникальный номер, используемый для идентификации процесса.
  3. Счетчик программ : содержит информацию, относящуюся к следующей инструкции.
  4. Регистры : список всех регистров ЦП, используемых процессом.
  5. Список открытых файлов : файлы, используемые процессом.
  6. Информация о расписании ЦП : содержит информацию, связанную с временем ЦП и ресурсами, выделенными процессу.
  7. Информация об управлении памятью : включает сведения об объеме памяти, используемой процессом.
  8. Информация о вводе / выводе : список устройств ввода или вывода, используемых процессом.

Linux использует следующие состояния процессов для описания всех своих процессов.

  • R : Запущенный процесс
  • S : процесс сна
  • D : непрерывный спящий процесс
  • T : завершенный процесс
  • Z : процесс зомби

Каждый раз, когда процесс завершает поставленную задачу, его состояние устанавливается как Zombie или Z. У каждого процесса есть родительский процесс, который вызывает семейство функций с именем wait () , ожидающих изменения состояния процесса. Например, если состояние процесса изменится с Running на Zombie , будет запущен метод wait () .

Метод wait () обычно удаляет блок управления процессом, связанный с этим процессом-зомби, а затем удаляет запись этого процесса из таблицы процессов.

Но иногда из-за плохой разработки программы родительский процесс не вызывает функцию wait () . В результате система не удаляет плату зомби-процесса. Запись в таблице процессов для этого конкретного процесса также остается неизменной.

Это дает зомби-процессу бесконечную продолжительность жизни. Поскольку система не может убить процесс, запись процесса никогда не удаляется, и PID никогда не освобождается.

How to Find Zombie Processes?

The first step to removing zombie processes on your system is analyzing which process has the Zombie process state. While you won’t be able to kill these processes directly as the system has already removed them from the memory, you can kill the parent process associated with them.

First, you need to check if your system’s process table has a zombie process. You can do that easily using the top command. Simply open your terminal and type:

You will see an output similar to this one. Notice the count of zombie processes at the top of the terminal window. If the output is zero, then you’ve nothing to worry about.

You can list information related to these zombie processes by piping the ps command with egrep. Egrep is an extension of the grep command in Linux which treats all patterns as an extended regex string.

Type the following command to list all the zombie processes:

The aforementioned command will look for lines that contain either Z or defunct in the output generated by the ps command. The output consists of a list of the zombie processes running on your system.

Просматриваем список процессов в Linux

Практически во всех популярных дистрибутивах, основанных на ядре Linux, список процессов открывается и просматривается с помощью одних и тех же команд, инструментов

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

Способ 1: Терминал

Бесспорно, классическая консоль операционных систем на Линуксе играет важнейшую роль при взаимодействии с программами, файлами и другими объектами. Все основные манипуляции юзер производит именно через это приложение. Потому с самого начала хотелось бы рассказать о выводе информации именно через «Терминал»

Обратим внимание мы лишь на одну команду, однако рассмотрим самые популярные и полезные аргументы

  1. Для начала запустите консоль, нажав на соответствующий значок в меню или используя комбинацию клавиш Ctrl + Alt + T.

Пропишите команду , чтобы просто убедиться в ее работоспособности и ознакомиться с видом показанных данных без применения аргументов.

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

Чтобы отобразились сразу все процессы, стоит добавить -A. В таком случае команда выглядит как (A обязательно должна быть в верхнем регистре). После нажатия на клавишу Enter вы сразу увидите сводку строк.

Предыдущая команда не отображает лидера группы (главный процесс из связки). Если вас интересуют и эти данные, здесь следует прописать .

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

Тогда полный список процессов с расширенной информацией будет вызываться через . В таблице вы увидите UID — имя пользователя, запустившего процесс, PID — уникальный номер, PPID — номер родительского процесса, C — количество времени нагрузки на ЦП в процентах, когда активен процесс, STIME — время активации, TTY — номер консоли, откуда был совершен запуск, TIME — время работы, CMD — команда, запустившая процесс.

Каждый процесс имеет свой PID (Proccess Identificator). Если вы хотите увидеть сводку о конкретном объекте, пропишите , где PID — номер процесса.

Отдельно хотелось бы затронуть и сортировку. Например, команда позволяет поставить все строки в порядке нагрузки на CPU, а — по затрачиваемому объему оперативной памяти.

Выше мы рассказали об основных аргументах команды , однако присутствуют еще и другие параметры, например:

  • — отображение дерева процессов;
  • — вывод версий объектов;
  • — выборка всех процессов кроме заданных;
  • — отображение только по имени команды.

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

Способ 2: Системный монитор

Конечно, метод просмотра нужной информации через консоль является сложным для некоторых пользователей, но он позволяет подробно ознакомиться со всеми важными параметрами и применить необходимые фильтры. Если вы хотите просто просмотреть список запущенных утилит, приложений, а также совершить с ними ряд взаимодействий, вам подойдет встроенное графическое решение «Системный монитор».

Подробнее: Способы запуска Системного монитора в Linux

  1. Запустите «Системный монитор» любым удобным методом, например, через меню.

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

Щелкните правой кнопкой мыши на интересующей строке, чтобы перейти в ее свойства.

Здесь отображаются практически все те же данные, которые доступны к получению через «Терминал».

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

Обратите внимание и на панель сверху — она позволяет сортировать таблицу по необходимым значениям.

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

Опишите, что у вас не получилось.
Наши специалисты постараются ответить максимально быстро.

Управление процессами в Linux

Также в Linux присутствуют некоторые команды для управления процессами:

   kill — посылает процессу сигнал завершения работы;

   pkill — завершает процесс по его имени;

   pgrep — ищет процесс по его имени (и, опционально, по имени запустившего его пользователя);

   killall — завершает все активные процессы.

Ниже приведены несколько основных примеров их использования:

Отправка сигналов процессам

Основополагающим способом управления процессами в Linux является отправка им соответствующих сигналов. Для перечисления списка всех доступных сигналов, введите команду:

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

Большинство сигналов предназначены для внутреннего использования системой или для программистов, когда они пишут код. Ниже приведены наиболее полезные сигналы:

   SIGHUP (1) — отправляется процессу, когда его управляющий терминал закрыт.

   SIGINT (2) — отправляется процессу управляющим терминалом, когда пользователь прерывает процесс нажатием клавиш Ctrl+C.

   SIGQUIT (3) — отправляется процессу, если пользователь посылает сигнал выхода Ctrl+D.

   SIGKILL (9) — этот сигнал немедленно завершает (убивает) процесс, и процесс не будет выполнять никаких операций очистки за собой.

   SIGTERM (15) — сигнал завершения программы (отправляется командой по умолчанию).

   SIGTSTP (20) — отправляется процессу управляющим терминалом с запросом на остановку; инициируется пользователем нажатием клавиш Ctrl+Z.

Ниже приведены примеры команды для уничтожения приложения с помощью PID, после его зависания:

или

или

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

или

Изменение приоритета процесса

В системе Linux все активные процессы имеют определенный приоритет выполнения, задаваемый так называемым nice-значением. Процессы с более высоким приоритетом обычно получают больше процессорного времени, чем процессы с более низким приоритетом. Однако пользователь с root-правами может повлиять на это с помощью команд nice и renice.

Узнать значение приоритета команды можно по выводу команды (столбец NI):

Используйте команду , чтобы задать NI-значение для запускаемого процесса. Имейте в виду, что обычные пользователи могут задавать данный параметр в диапазоне от до тем процессам, которыми они владеют. Только пользователь root может использовать отрицательные значения приоритета.

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

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

На данный момент это всё! Если у вас есть какие-либо вопросы или дополнительные идеи, вы можете поделиться ими с нами с помощью комментариев.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: