来自man renice
:
超级用户以外的用户只能更改其拥有的进程的优先级,并且只能在0到PRIO_MAX(20)的范围内单调增加其“ nice值”(出于安全原因)[...]
因此,我可以将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?
编辑:我应该学会向下滚动。事实证明,这已列为bug 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
命令出现在我认为是1980年的4.0BSD中。此命令应该很容易修复,因此一方面他们似乎选择保留它,另一方面将其列为错误。