为什么用户可以增加进程的好坏但减少需要root?

bla*_*cat 5 privileges nice

我拉到顶部,发现一个程序正在使用约 80-90% 的 CPU。我增加了niceness,看看是否可以减少负载。然后我尝试将同一过程的好处降低到初始水平,并被告知我没有适当的权限。这里所需的特权差异是否有充分的理由?

cha*_*aos 4

是的。当系统中的每个用户都有可能降低其进程的性能时,每个用户都可能导致其他进程陷入饥饿。

Linux 内核中的进程优先级确实有一定的意义。如果你给一个进程一个好的值,-20它就会获得大量的CPU时间。这就是为什么只能root减少这些值。

Eliah Kagan建议的补充

为什么用户无法将自己的流程恢复到他们自己开始时的良好级别?

关键是,系统并没有注意到是增加了好感度。因此,没有任何机制可以查明您是否root继续这样做。

另一种方法是:普通用户不应该能够覆盖特权用户的操作。如果root已登录并且他想要将您的流程的友好性更改为20:他可以,并且应该禁止您撤消该更改。除非内核不记得是谁做了善意的更改,否则您将被禁止。

也许有一天,Linux 内核开发人员会将该功能包含到内核代码中。您可以提出功能请求。但是,请注意,内核开发人员不会仅仅因为新东西很酷就喜欢它。