Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №5 (Упр. процессами).doc
Скачиваний:
6
Добавлен:
21.11.2018
Размер:
116.74 Кб
Скачать

3.2. Объединение ps и kill: top

top - это программа, одновременно совмещающая функции ps и kill, а также используемая для наблюдения за процессами в режиме реального времени, предоставляя информацию об использовании процессора и памяти, времени работы и т.п., как показано на Рисунок 1, «Наблюдение за процессами при помощи top».

Рисунок 1. Наблюдение за процессами при помощи top

Утилита top полностью управляется с клавиатуры. Вы можете получить справку, нажав на клавишу h. Наиболее полезные команды:

  • k: эта команда используется для отправки сигнала kill процессу. При этом top спросит у вас PID процесса, а затем номер или название отправляемого сигнала (по умолчанию используется TERM или 15);

  • M: эта команда используется для сортировки процессов по объему занятой ими памяти (поле %MEM);

  • P: эта команда используется для сортировки процессов по занятому ими процессорному времени (поле %CPU). Это метод сортировки по умолчанию;

  • u: эта команда используется для вывода процессов заданного пользователя. top спросит у вас его имя. Вам необходимо ввести имя пользователя, а не его UID. Если вы не введете никакого имени, будут показаны все процессы;

  • i: по умолчанию выводятся все процессы, даже спящие. Эта команда обеспечивает вывод информации только о работающих в данный момент процессах (процессы, у которых поле STAT имеет значение R, Running). Повторное использование этой команды вернет вас назад к списку всех процессов.

  • r: эта команда используется для изменения приоритета выбранного процесса.

Все процессы в системе работают с определёнными приоритетами, также называемыми «значениями nice», которые могут изменяться от -20 (наивысший приоритет) до 19 (наименьший приоритет). Если приоритет не опредёлен, каждый процесс будет запускаться с приоритетом по умолчанию - 0 («базовым» приоритетом распределения машинного времени). Для процессов с более высоким приоритетом (меньшим значением nice, вплоть до -20) будет выделено больше системных ресурсов по сравнению с другими процессами с меньшим приоритетом (до 19), предоставляя им большее число циклов процессора. Обычные пользователи могут только понижать приоритет своих собственных процессов в диапазоне от 0 до 19. Суперпользователь (root) может установить для любого процесса любое значение приоритета.

4. Установка приоритетов для процессов: nice, renice

Все процессы в системе работают с определёнными приоритетами, также называемыми «значениями nice», которые могут изменяться от -20 (наивысший приоритет) до 19 (наименьший приоритет). Если приоритет не опредёлен, каждый процесс будет запускаться с приоритетом по умолчанию - 0 («базовым» приоритетом распределения машинного времени). Для процессов с более высоким приоритетом (меньшим значением nice, вплоть до -20) будет выделено больше системных ресурсов по сравнению с другими процессами с меньшим приоритетом (до 19), предоставляя им большее число циклов процессора. Обычные пользователи могут только понижать приоритет своих собственных процессов в диапазоне от 0 до 19. Суперпользователь (root) может установить для любого процесса любое значение приоритета.

4.1. renice

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

renice приоритет [[-p] pid ...] [[-g] pgrp ...] [[-u] пользователь ...]

где приоритет - значение приоритета, pid - идентификатор процесса (используйте опцию -p для указания нескольких процессов), pgrp - идентификатор группы процесса (если их несколько, используйте -g) и пользователь - имя пользователя, владеющего процессом (-u для нескольких пользователей).

Допустим, что вы запустили процесс с PID 785, который выполняет длительные научные вычисления, а пока он работает, вы хотели бы немного поиграть, для чего вам нужно освободить немного системных ресурсов. Тогда вы можете набрать:

$ renice +15 785

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

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

# renice +20 -u peter

После этого все процессы пользователя peter получат наименьший приоритет и не будут затруднять работу процессов других пользователей.

4.2. nice

Теперь, когда вы знаете о том, что можно изменять приоритеты процессов, вам может понадобиться запустить программу с определенным приоритетом. Для этого используйте команду nice. В этом случае вам необходимо указать свою команду в качестве опции для nice. Опция -n используется для установки значения приоритета. По умолчанию nice устанавливает приоритет 10. Например, вам нужно создать ISO-образ установочного CD-ROM'а с Mandriva Linux:

$ dd if=/dev/cdrom of=~/mandriva1.iso

В некоторых системах со стандартным IDE CD-ROM процесс копирования больших объемов информации может захватить слишком много ресурсов системы. Чтобы предотвратить блокирование других процессов из-за копирования, вы можете запустить процесс с пониженным приоритетом при помощи этой команды: