- renice — Man Page
- Examples (TL;DR)
- Synopsis
- Description
- Options
- Files
- Notes
- History
- Examples
- See Also
- Reporting Bugs
- Availability
- Изучаем команды Linux: nice и renice
- 1. Введение
- 2. Что такое процесс
- 2.1. Планирование процессов
- 2.2. Жизненный цикл процесса
- 3. Использование команды nice
- 4. Использование команды renice
- 5. Заключение
- Linux renice command
- Description
- Syntax
- Options
- Priority
- Examples
- Related Commands
- Использование команд «Nice» и «Renice» в Linux
- Используйте Nice, чтобы получить приоритеты прямо
- Util-linux
- Официальный адрес пакета
- Содержимое Util-linux
- Краткие описания
- Зависимости установки Util-linux
renice — Man Page
alter priority of running processes
Examples (TL;DR)
- Change priority of a running process: renice -n niceness_value -p pid
- Change priority of all processes owned by a user: renice -n niceness_value -u user
- Change priority of all processes that belong to a process group: renice -n niceness_value —pgrp process_group
Synopsis
renice [-n] priority [-g|-p|-u] identifier.
Description
renice alters the scheduling priority of one or more running processes. The first argument is the priority value to be used. The other arguments are interpreted as process IDs (by default), process group IDs, user IDs, or user names. renice‘ing a process group causes all processes in the process group to have their scheduling priority altered. renice‘ing a user causes all processes owned by the user to have their scheduling priority altered.
Options
Specify the scheduling priority to be used for the process, process group, or user. Use of the option -n or —priority is optional, but when used it must be the first argument.
Interpret the succeeding arguments as process group IDs.
Interpret the succeeding arguments as process IDs (the default).
Interpret the succeeding arguments as usernames or UIDs.
Display version information and exit.
Display help text and exit.
Files
to map user names to user IDs
Notes
Users other than the superuser may only alter the priority of processes they own. Furthermore, an unprivileged user can only increase the «nice value» (i.e., choose a lower priority) and such changes are irreversible unless (since Linux 2.6.12) the user has a suitable «nice» resource limit (see ulimit(1p) and getrlimit(2)).
The superuser may alter the priority of any process and set the priority to any value in the range -20 to 19. Useful priorities are: 19 (the affected processes will run only when nothing else in the system wants to), 0 (the «base» scheduling priority), anything negative (to make things go very fast).
History
The renice command appeared in 4.0BSD.
Examples
The following command would change the priority of the processes with PIDs 987 and 32, plus all processes owned by the users daemon and root:
renice +1 987 -u daemon root -p 32
See Also
Reporting Bugs
Availability
The renice command is part of the util-linux package which can be downloaded from Linux Kernel Archive.
Источник
Изучаем команды Linux: nice и renice
1. Введение
Возможность для пользователя задавать значение приоритета его собственных процессов определяет ваше отношение к другим пользователям системы. Даете ли вы им возможность использовать поцессор или просто злоупотребляете системными ресурсами без достаточных оснований? В этой статье вы узнаете, как управлять процессами в плане потребления ими ресурсов процессора и изменения приоритета ваших процессов, используя команды nice и renice. Мы начнем с азов теории, поговорим о том, что такое процесс, планирование, как создать дочерний процесс. Затем мы перейдем к команде nice и узнаем, как изменить значение приоритета процесса.
2. Что такое процесс
Простыми словами процесс — это соглашение об именовании, используемое в Linux для обозначения роли запущенной программы. Процесс — это набор правил, которым руководствуется данная программа при использовании выделенного процессорного времени, памяти и ресурсов ввода/вывода. Каждый процесс, запущенный в системе Linux, имеет свой ID (PID), по которому его можно отслеживать.
Ядро Linux позволяет собирать различную информацию о каждом процессе, которая включает, но не ограничивается:
— статус процесса ( работает, спит, зомби или остановлен)
— приоритет выполнения процесса
— информация об используемых ресурсах
— владелец процесса
— сетевые порты и файлы, открытые процессом
— и так далее.
Итак, теперь мы кое-что знаем процессах и можем продвинуться дальше и создать какой-нибудь процесс. Чтобы сделать это, просто откройте терминал и выполните команду yes в фоне, перенаправив ее вывод в /dev/null:
После это воспользуемся командой ps -l, чтобы извлечь информацию о нашем процессе:
Из этой таблицы мы можем узнать немало интересного:
F — FLAG: процесс запущен без привилегий суперпользователя. В противном случае мы могли бы увидеть число 4 или сумму 1 и 4. Подробности можно узнать, посмотрев man-страницу ps.
S — STATE: процесс в настоящее время работает.
UID — ID пользователя, инициализировавшего процесс. UID на самом деле является алиасом EUID (Effective User ID)
PID — ID процесса нашей команды yes 5997.
PPID — Parent Process ID. Это ID родительского для нашей команды yes процесса. В нашем случае это bash с PID 5830.
C — загрузка процессора, целое число, выражается в %.
PRI — Приоритет процесса. Большее значение означает меньший приоритет.
NI — Значение Nice, которое находится в диапазоне от -20 до 19. Большее значение означает меньший приоритет.
2.1. Планирование процессов
Если вы не хотите слишком глубоко вникать в детали планирования и приоритета процессов, то можете пропустить этот раздел. Здесь мы сосредоточимся на описании процессов в Linux и попытаемся обобщить некоторые моменты, так как подробное описание их может занять множество страниц.
С нашей точки зрения необходимо понимать, что принцип работы планировщика Linux (для ядра версии >= 2.6) вытесняющий. Под этим понимается способность ядра выбирать среди всех заданий то, которое имеет наивысший приоритет. Далее, ядро делит списки приоритета на задачи реального времени и пользовательские задания, ранжирующиеся от 1 — 100 и 101 — 140 соответственно.
Далее, ядро Linux выделяет задачам с более высоким приоритетом больший квант времени, а задачам с меньшим приоритетам — меньший квант времени, который в среднем составляет 200 и 10 мс соответственно. Другими словами, каждое задание допускается к выполнению только, если у него остается какая-либо часть времени. Поэтому меньший отрезок времени для выполнения означает, что процесс получает меньше времени в очереди выполнения и, соответственно, получает меньше ресурсов. Когда отрезок времени процесса заканчивается, он помещается в очередь выполнения с истекшим временем, затем его приоритет пересчитывается, и он снова помещается в активную очередь выполнения. Эта зависимость иллюстрируется приведенной здесь диаграммой. Важно помнить, что обе очереди выполнения содержат списки задач, отсортированных по их приоритету.
2.2. Жизненный цикл процесса
Основной принцип управления процессами в Linux включает две важные операции, создающие новый процесс. Операция, при которой процесс копирует себя, и тем самым создает новый процесс с уникальным ID, осуществляется при помощи вызова fork(). За ней часто следует операция exec(), запускающая новую программу. Первый процесс, создающийся при загрузке системы, называется init, он всегда получает PID 1. Все остальные процессы считаются дочерними по отношению к процессу init. В нормальных условиях перед завершением дочернего процесса требуется, чтобы родительский процесс послал ему значение exit. При успешном завершении процесса он отправляет родительскому процессу значение 0. Если по каким-либо причинам дочерний процесс пережил родительский, init отмечает его как не имеющий родителей.
3. Использование команды nice
Так как мощь процессоров на протяжении многих лет возрастает в геометрической прогрессии, соответственно уменьшается важность команды nice. В результате сегодня редко приходится вручную изменять приоритет процессов. Тем не менее, такая возможность имеется и она может быть полезной в некоторых ситуациях. По умолчанию nice устанавливает значение приоритета 10.
Чтобы запустить процесс со значением nice, отличным от 10, можно использовать ключ -n.
Чтобы установить значение nice ниже нуля, требуются права суперпользователя. В противном случае будет установлено значение 0. Ниже мы пробуем задать значение nice -1 без прав root:
Поэтому, чтобы задать значение nice меньше 0, необходимо запускать программу как root, или использовать sudo.
4. Использование команды renice
В предыдущем разделе мы узнали, как запускать программу с заданным значением nice. Теперь мы попробуем изменить значение nice у запущенной программы с помощью команды renice. Итак, у нас есть работающая программа yes со значением nice 10:
Чтобы изменить его значение, мы можем использовать команду renice со значением nice и PID процесса. Давайте изменим значение nice на 15:
Согласно правилам, обычный пользователь может только увеличивать значение nice (уменьшать приоритет) любого процесса. Если попробовать изменить значение nice с 15 до 10, мы получим следующее сообщение об ошибке:
Также, команда renice позволяет суперпользователю изменять значение nice процессов любого пользователя. Это делается с помощью ключа -u. Следующая команда изменяет значение приоритета всех процессов пользователя на -19:
5. Заключение
Команда nice может быть удобным инструментом и она очень проста в использовании. Пожалуйста, отметьте, что для изменения значения приоритета также может использоваться команда top.
Источник
Linux renice command
On Unix-like operating systems, the renice command modifies the priority of running processes. It is similar to the nice command, but is used for processes that are already running.
This page describes the Linux version of renice.
Description
renice alters the scheduling priority of one or more running processes.
A higher value of priority actually makes the process lower priority; it means the process demands fewer system resources (and therefore is a «nicer» process). A lower priority value means the process demands more resources, possibly denying those resources to processes that are «nicer».
The priority value of any given process can vary from -20 (highest priority, least «nice») to 20 (lowest priority, «nicest»). The default priority of new processes, by default, is 0.
renice‘ing a process group causes all processes in the process group to have their scheduling priority altered.
renice‘ing a user causes all processes owned by the user to have their scheduling priority altered.
By default, the processes to be affected are specified by their process ID’s.
Syntax
Options
-n, —priority | The scheduling priority of the process, process group, or user. |
-g, —pgrp | Force who parameters to be interpreted as process group ID’s. |
-u, —user | Force the who parameters to be interpreted as user names. |
-p, —pid | Resets the who interpretation to be (the default) process ID’s. |
-v, —version | Display version information, and exit. |
-h, —help | Display a help message, and exit. |
Priority
Users other than the superuser may only alter the priority of processes they own, and can only monotonically increase their «nice value» in the range 0 to PRIO_MAX (20). The superuser may alter the priority of any process and set the priority to any value in the range PRIO_MIN (-20) to PRIO_MAX.
Useful settings for priority are:
- 20: the affected processes run only when nothing else in the system needs the resources.
- 0: the default.
- any negative value: makes things go very fast, at the expense of other processes.
Examples
renice +1 987 -u daemon root -p 32
Change the priority of process IDs 987 and 32, and all processes owned by users daemon and root, to be one greater (+1, one increment «nicer») than its current value.
Related Commands
kill — Send a signal to a process, affecting its behavior or killing it.
nice — Invoke a command with an altered scheduling priority.
ps — Report the status of a process or processes.
top — Display a sortable, continually-updated list of processes.
Источник
Использование команд «Nice» и «Renice» в Linux
Системы Linux могут запускать много процессов (заданий) одновременно. Даже если процессор имеет несколько процессоров или ядер, число процессов обычно намного превышает количество доступных ядер. Задача ядра Linux — распределять доступные циклы ЦП среди активных процессов.
Используйте команды nice и renice, чтобы заставить ядро перераспределить циклы процессора для конкретных приложений.
Используйте Nice, чтобы получить приоритеты прямо
По умолчанию все процессы считаются одинаково срочными и имеют одинаковое количество процессорного времени. Linux связывает параметр приоритета с каждым заданием, которое может быть установлено или изменено пользователем. Затем ядро Linux резервирует процессорное время для каждого процесса на основе его относительного значения приоритета.
Параметр nice используется для этой цели. Он варьируется от минус 20 до плюс 19 и может принимать только целые значения. Значение минус 20 представляет самый высокий уровень приоритета, тогда как 19 обозначает самый низкий. Тот факт, что самый высокий уровень приоритета обозначен самым отрицательным числом, несколько противоречит интуиции. Однако работа с более низким приоритетом считается «более приятной», поскольку она позволяет другим процессам использовать большую долю процессорного времени.
Источник
Util-linux
Официальный адрес пакета
Содержимое Util-linux
Пакет Util-linux содержит ряд различных утилит. Некоторые из наиболее используемых утилит монтируют. размонтируют и обеспечивают работу с дисками, открывают порты tty и отправляют сообщения ядру.
Устанавливаемые программы: agetty, arch, blockdev, cal, cfdisk, chkdupexe, col, colcrt, colrm, column, ctrlaltdel, cytune, ddate, dmesg, elvtune, fdformat, fdisk, fsck.cramfs, fsck.minix, getopt, hexdump, hwclock, ipcrm, ipcs, isosize, kill, line, logger, look, losetup, mcookie, mkfs, mkfs.bfs, mkfs.cramfs, mkfs.minix, mkswap, more, mount, namei, parse.bash, parse.tcsh, pg, pivot_root, ramsize (ссылка на rdev), raw, rdev, readprofile, rename, renice, rev, rootflags (ссылка на rdev), script, setfdprm, setsid, setterm, sfdisk, swapoff (ссылка на swapon), swapon, test.bash, test.tcsh, tunelp, ul, umount, vidmode (ссылка на rdev), whereis и write
Краткие описания
agetty открывает порт tty, запрашивает имя пользователя и запускает программу login.
arch возвращает архитектуру машины.
blockdev позволяет вызвать ioctls блочного устройства из командной строки.
cal отображает простой календарь.
cfdisk используется для монипуляций с таблицей разделов указанного устройства.
chkdupexe ищет дубликаты исполняемых файлов.
col фильтрует перевернутые строки, поступающие со ввода.
colcrt используется для фильтрации вывода nroff для терминалов CRT.
colrm отфильтровывает указанные колонки.
column форматирует указанный файл в несколько колонок.
ctrlaltdel устанавливает функцию для комбинации клавиш Ctrl+Alt+Del для аппаратного или программного сброса.
cytune используется для настройки параметров драйверов последовательного порта для карт Cyclades.
ddate выдает Discordian дату или конвертирует указанную дату по Григорианскому календарю в Discordian дату.
dmesg выводит загрузочные сообщения ядра.
elvtune может использоваться для настройки работы и взаимодействия блочных устройств.
fdformat — низкоуровневое форматирование дискеты.
fdisk может использоваться для манипуляций таблицы разделов указанного устройства.
fsck.cramfs проводит проверку целостности файловой системы Cramfs на указанном устройстве.
fsck.minix проводит проверку целостности файловой системы Minix на указанном устройстве.
getopt оанализирует параметры командной строки.
hexdump отображает заданный файл в шестнадцатиричном или другом указанном формате.
hwclock используется для чтения или установки аппаратных часов системы (также называемых RTC- или BIOS-часами).
ipcrm удаляет указанный ресурс IPC.
ipcs отображает статус IPC.
isosize возвращает размер файловой системы iso9660.
kill прерывает заданные процессы.
line копирует строку.
logger добавляет указанное сообщение в системный лог.
look выводит строки, начинающиеся с указанной строки.
losetup используется для установки и управления loop устройств.
mcookie генерирует «магические» ключи для xauth.
mkfs используется длоя создания файловой системы на устройстве (обычно разделе жесткого диска).
mkfs.bfs создает файловую систему SCO bfs.
mkfs.cramfs создает файловую систему cramfs.
mkfs.minix создает файловую систему Minix.
mkswap инициализирует указанной устройство или файл для использования в качестве свопа.
more — фильтр для постраничного вывода текста. Но less намного лучше.
mount присоединяет файловую систему на указанном устройстве к указанной директории в дереве системных файлов.
namei показывает символические ссылки в указанных путях.
pg постранично отобрахает текстовый файл.
pivot_root телает указанную файловую системы корневой для текущих прооцессов.
ramsize может использоваться для установки размера RAM-диска в загрузочной карте.
rdev может использоваться для запроса и установки корневого устройства и других параметров карты загрузки.
readprofile считывает профильную информацию ядра.
rename переименовывает указанные файлы, заменяет указанную строку на другую.
renice используется для изменения проритета выполнения работающего процесса.
rev переворачивает строки в указанном файле.
rootflags может использоваться для установки или снятия параметров корневой файловой системы в карте загрузки.
script создает скрипт терминальной сессии.
setfdprm устанавливает пользовательские параметры дискеты.
setsid запускает указанную программу в новой сессии.
setterm используется для установки аттрибутов терминала.
sfdisk мнипулирует таблицами разделов дисков.
swapdev может использоваться для установки своба в карте загрузки.
swapoff отключает устройства или файлы свопа.
swapon подключает устройства или файлы свопа.
tunelp используется для настройки параметров LP устройств.
ul — фильтр для перевода знаков подчеркивания в escape-последовательности подчеркивания для текущего терминала.
umount отключает файловую систему от дерева системных файлов.
vidmode может использоваться для установки видеорежима в карте загрузки.
whereis возвращает местоположение бинарников, исходников или man-страниц для указанной команды.
write посылает сообщение указанному пользователю в том случае, если пользователь не отключил эту возможность.
Зависимости установки Util-linux
Util-linux зависит от: Bash, Binutils, Coreutils, Diffutils, GCC, Gettext, Glibc, Grep, Make, Ncurses, Sed, Zlib.
Источник