От man renice
:
Пользователи, отличные от суперпользователя, могут изменять только приоритет процессов, которыми они владеют, и могут монотонно увеличивать свое «хорошее значение» (по соображениям безопасности) в диапазоне от 0 до PRIO_MAX (20) [...]
Итак, я могу использовать renice
свои собственные процессы вверх (отдавая им более низкий приоритет), но никогда не снижая их:
$ renice 10 22316
22316 (process ID) old priority 0, new priority 10
$ renice 9 22316
renice: failed to set priority for 22316 (process ID): Permission denied
Почему это? Я могу понять, почему обычные пользователи не могут установить хорошие значения ниже 0, но почему, поскольку я могу уменьшить приоритет до 10, я не могу увеличить его снова до 9? Какая «причина безопасности» существует для этого? У меня есть право запустить процесс с хорошим значением 9, так почему я не могу изменить его до 9?
РЕДАКТИРОВАТЬ: я должен научиться прокручивать вниз. Оказывается, это указано как ошибка в man renice
:
BUGS
Non super-users can not increase scheduling priorities of their own
processes, even if they were the ones that decreased the priorities
in the first place.
Это еще более запутанно. Если они считают это поведение ошибкой, почему бы не изменить его? Команда renice
появилась в 4.0BSD, которая, я думаю, относится к 1980 году. Это должно быть очень легко исправить, так что, с одной стороны, они решили оставить ее, а с другой - перечислить ее как ошибку.
Ответы:
Начиная с Linux 2.6.12, это зависит от значения лимита RLIMIT_NICE (
ulimit -e
). Может принимать значения от 0 до 40. Это ограничение больше ограничения приоритета процесса (чем больше это число, тем выше приоритет, который пользователь может установить для процесса).Вы заметите, что значение по умолчанию равно 20 в Ubuntu 10.04 и 0 в Debian jessie, например.
Значение
n
этого предела означает, что процесс без возможности CAP_NICE может только повысить приоритет процесса до значенияn
, что означает уменьшение степени полезности до уровня точности20 - n
. Таким образом, для значения 0 это означает, что ни один непривилегированный пользователь не может снизить милость ниже 20, поэтому ни один непривилегированный пользователь не может снизить милость.При значении 20 непривилегированные пользователи могут уменьшить значение обратно до 0.
Администратор сам решает, разрешать ли пользователям снижать приоритет процесса и до какого уровня, устанавливая для этого жесткое ограничение.
Относительно того, почему администратор может не захотеть, чтобы пользователи понизили свой приоритет процесса, см . Ответ Flup .
источник
Это по причинам, которые я бы назвал политическими . Идея состоит в том, что обычные пользователи не могут переопределить действия привилегированных пользователей.
Допустим, вы пользователь на каком-то огромном общем сервере. Вы запускаете чудовищные процессы загрузки процессора в ущерб другим пользователям. Сисадмин - это кто-
renice
то из ваших процессов, потому что он вам не очень нравится. ОС не помнит, кто это сделалrenice
, но она знает, что обычные пользователи не могут отменить действие. Таким образом, системный администратор может контролировать приоритеты процессов обычных пользователей.источник
man renice
.renice
не может быть отменено, кроме как привилегированным пользователем.renice
чтоroot
сделал.Странный ? это работает для меня на
пример
2-е редактирование
Изменения конфигурации
И я являюсь членом аудиогруппы, это должно было уменьшить задержку с помощью jack / ardour и буфера xruns при записи.
Renice
источник
cat /etc/lsb*
иrenice --version
.renice --version renice from util-linux-ng 2.17.2
но все же в AIX это невозможно