Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

12 - Процессы Linux. nice-фактор. Команда ps. кратко

Лекция



Сразу хочу сказать, что здесь никакой воды про процессы linux, и только нужная информация. Для того чтобы лучше понимать что такое процессы linux, nice-фактор , ps , настоятельно рекомендую прочитать все из категории Операционная система LINUX.

Сегодня мы поговорим о процессах в Linux, а следующая лекция будет о сигналах с помощью которых процессы могут взаимодействовать между собой. Для управления процессами существует такая подсистема как менеджер процессов. Как уже говорилось ранее в Linux реализована многозадачность с вытеснением и менеджер процессов полностью управляет процессами. Каждый процесс имеет свой контекст. Контекст процесса это таблица распределения памяти, текущий статус процесса, приоритет процесса, данные о используемых ресурсах, маска сигналов, идентификаторы процесса и другие свойства. Идентификатор процесса состоит из идентификатора PID и идентификатора родительского процесса PPID.

12 - Процессы Linux. nice-фактор. Команда ps.

Как вы уже знаете самый первый пользовательский процесс называется init. Его PID всегда равен 1, а PPIDравен 0, так как он не имеет родительского процесса, а порождается ядром на определенном этапе загрузки системы. Все остальные процессы являются дочерними процессами и имеют PPID отличный от нуля. Для того чтобы породить новый процесс, родительский вызывает функцию ядра fork(), в результате которой происходит клонирование родительского процесса и получается абсолютно одинаковый процесс на начальном этапе. Единственное отличие: у дочернего процесса увеличивается PID. PID дочернего процесса всегда будет больше чем у родительского. В остальном контекст полностью будет совпадать с родительским. Затем для дочернего процесса запускается функция exec(), которая начинает уже изменять контекст на нужный, загружать в память код программы и т.д.

Операционная система Linux является еще и многопользовательской. У каждого процесса есть такой параметр как “владелец” - от имени которого выполняется процесс. Это UID процесса. Также у процесса есть такой параметр как GID (по аналогии с GID пользователя). Кроме этого есть такие параметры как EUID (эффективныйUID) и EGID (эффективный GID). Возможности процесса в системе определяются именно этими параметрами:EUID и EGID.

EUID = UID пользователя, если бит setuid = 0
EUID = UID программы, если бит setuid = 1

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

Многие процессы выполняют операции ввода/вывода информации в/из терминала. Поэтому есть такой параметр как Терминал. А есть процессы которые работают в фоновом режиме. Такие процессы не привязаны к терминалу. Например, процесс cron.

Процесс может находится в нескольких состояниях:

1. Об этом говорит сайт https://intellect.icu . Выполнение - менеджер процессов выделил все необходимые ресурсы и процесс просто ждет своей очереди на получение следующей порции процессорного времени.
2. Ожидание - процесс получил все ресурсы, но для продолжения работы он ждет какую-то информацию, например, от другого процесса.
3. Остановленный - процесс ничего не делает, процессорное время не получает. Процесс был переведен в это состояние с помощью специальных сигналов и выйти из этого состояния может также только с помощью соответствующего сигнала.
4. “Зомби” - это процесс который должен был завершиться с освобождением всех ресурсов, но по какой-то причине завершение не произошло корректно. С процессами “Зомби” нужно быть осторожными. Если таких процессов много значит в системе что-то не так.

Для просмотра процессов и их свойств предназначена команда ps. Команда имеет очень много ключей и параметров. Все их можно посмотреть в man ps. Мы рассмотрим несколько самых нужных для администратора компьютера. Также хочу обратить внимание на то, что программе ps можно передавать как параметры, так и ключи. Напомню, что перед ключом (или последовательностью ключей) всегда стоит дефис, а параметры пишутся без дефиса. Сравните результаты команд ps с ключом (ps -a) и с параметром (ps a). Как видите результаты существенно отличаются. А теперь рассмотрим еще несколько распространенных вариантов команды ps.

12 - Процессы Linux. nice-фактор. Команда ps.

Чтобы отобразить все существующие процессы предназначена команда ps aux. Результат ниже сокращен (процессов гораздо больше):

igor@adm-ubuntu:~/linux$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 11740 0.0 0.0 3124 448 ? S< 11:28 0:00 udevd --daemon
igor 11805 0.0 0.0 1848 548 pts/0 S+ 11:43 0:00 ping 192.168.222.10
igor 11915 0.0 0.1 2640 1040 pts/2 R+ 12:00 0:00 ps aux

По команде ps aux можно увидеть достаточно обширный объем информации. Расшифровка столбцов следующая:

USER - владелец процесса
PID - PID процесса
%CPU - процент использования процессора. Это время использования процессора деленное на общее время существования процесса.
%MEM - процент использования физической оперативной памяти.
VSZ - объем виртуальной памяти выделенной процессу (в Килобайтах)
RSS - объем физической оперативной памяти выделенной процессу (в Килобайтах)
TTY - к какому терминалу “привязан” процесс
STAT - статус (состояние) процесса. R - выполнение, S - ожидание, T - остановлен, Z - “зомби”
START - время когда был запущен процесс
TIME - количество процессорного времени, которое брал себе процесс. Обычно там нули или малое число (0:00 - 0:09). Если число большое, то процесс загружает процессор и следует проверить все ли с ним в порядке.
COMMAND - имя команды. Какой код был выполнен во время исполнения функции exec().

Чтобы увидеть информацию о nice-факторе необходимо выполнить команду ps lax:

igor@adm-ubuntu:~$ ps lax
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
1 1000 2760 1 20 0 17928 5512 poll_s Ss ? 0:01 gnome-screensaver
0 1000 5859 3543 20 0 6292 3512 wait Ss pts/2 0:00 bash
0 1000 12275 5859 20 0 3752 1564 wait S+ pts/2 0:00 man ps

Особый интерес для нас предоставляют следующие столбцы:

PPID - отображен PID родительского процесса. Например для первой строки примера PPID равен 1, значит родительским для этого процесса является процесс init. Процесс из третьей строки является дочерним процесса из второй строки и т.д.
NI - значение nice-фактора.
PRI - приоритет процесса.

Выше я уже упоминал о nice-факторе как параметре который влияет на приоритет процесса. Чем выше число в столбце PRI тем ниже приоритет процесса. Пользователи могут изменить приоритет процесса при помощи изменения nice-фактора. Для этого существуют две команды: nice и renice. Диапазон значений nice-фактораневелик: от -20 до 19. Когда создается дочерний процесс, то он наследует nice-фактор своего предка. По умолчанию большинство пользовательских процессов имеют nice-фактор 0, так как именно такой nice-факторустановлен для процесса init. Чтобы изменить nice-фактор запускаемого процесса используют команду nice:

igor@adm-ubuntu:~$ nice -n 5 sleep 30 &

igor@adm-ubuntu:~$ ps lax | grep sleep
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
0 1000 3567 3543 20 0 6292 3528 wait Ss pts/0 0:00 bash
0 1000 13098 3567 25 5 2952 628 hrtime SN pts/0 0:00 sleep 30

Синтаксис команды простой: через ключ -n мы передаем значение приращения nice-фактора, а затем идет команда для которой будет устанавливаться новый nice-фактор. Речь идет именно о приращении, так как реальный nice-фактор нового процесса будет равен nice-фактору родительского процесса сложенному с числом передаваемым команде nice. В приведенном выше примере nice-фактор родительского процесса (оболочки bash) равен нулю, значит nice-фактор дочернего будет 0+5=5, что мы и видим на результатах.

Обычные пользователи могут только увеличивать nice-фактор, но не могут его уменьшать. Сделано это для того, чтобы пользователи не смогли создавать высокоприоритетные процессы. Если от имени пользователя выполнить команду nice -n -5 sleep 30 &, получим сообщение об ошибке. Уменьшать nice-фактор может только пользователь root.

12 - Процессы Linux. nice-фактор. Команда ps.

Если необходимо изменить nice-фактор уже запущенного процесса, то используют команду renice. Например:

igor@adm-ubuntu:~$ renice 14 13229
13229: старый приоритет 10, новый приоритет 14

где 13229 это PID процесса для которого меняется nice-фактор. Из примера, также видно, что число 14 это уже не приращение, а просто новое значение nice-фактора. Если необходимо изменить nice-фактор всех процессов одного пользователя, то используется ключ -u. Например, изменим nice-фактор всех процессов пользователяtest:

test@adm-ubuntu:~$ ps lax | grep test
4 1001 13256 5630 20 0 8656 3036 wait S pts/1 0:00 su - test
0 1001 13297 13266 20 0 3056 824 pipe_w S+ pts/1 0:00 grep –color=auto test
test@adm-ubuntu:~$ renice 5 -u test
1001: старый приоритет 0, новый приоритет 5
test@adm-ubuntu:~$ ps lax | grep test
4 1001 13256 5630 25 5 8656 3036 wait SN pts/1 0:00 su - test
0 1001 13302 13266 25 5 3056 820 pipe_w SN+ pts/1 0:00 grep –color=auto test

Для каких практических целей можно использовать nice-фактор? Например, если какие-то процессы занимают в данный момент большое количество процессорного времени, то для более быстрого определения проблемы можно запустить интерпретатор команд с более низким nice-фактором. Операции разного рода кодирования или сжатия, которые требуют много времени (часы), можно запускать с более высоким nice-фактором, чтобы не загружать систему. Быстродействие современных процессоров, таково, что к изменению nice-фактораприбегают все реже, но тем не менее иногда он может быть очень полезен.

12 - Процессы Linux. nice-фактор. Команда ps.

На следующей лекции поговорим о сигналах.

Пожалуйста, пиши комментарии, если ты обнаружил что-то неправильное или если ты желаешь поделиться дополнительной информацией про процессы linux Надеюсь, что теперь ты понял что такое процессы linux, nice-фактор , ps и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Операционная система LINUX

создано: 2014-09-13
обновлено: 2021-01-10
132485



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Операционная система LINUX

Термины: Операционная система LINUX