RLIMIT_NICE 有什么用吗?

Jer*_*oen 9 linux priority nice ulimit

我prlimit在 Ubuntu 中使用我的沙箱来做一些资源限制,这非常有帮助。但是,我不太确定如何处理RLIMIT_NICE. 文档说:

RLIMIT_NICE(自 Linux 2.6.12 起,但请参阅下面的 BUGS)指定可以使用 setpriority(2) 或 nice(2) 将进程的 nice 值提高到的上限。

但是,根据getpriority(2),只有首先由超级用户拥有的进程才能提高它的价值。但如果是这种情况,该RLIMIT_NICE值不会增加太多功能,因为特权用户RLIMIT无论如何都可以任意降低或提高值。

所以我不明白如何使用或解释RLIMIT_NICE. 对于非特权用户来说,整个事情似乎毫无用处,因为他们一开始无法提高优先级,并且将其设置为低于当前优先级是没有意义的。不过,对于超级用户它并没有真正添加任何东西要么是因为nice,和RLIMIT_NICE软,硬限制,可以任意提高。

那么背后的想法是RLIMIT_NICE什么?

小智 7

事实上,RLIMIT_NICE允许您绕过基本规则,即“只有由 root 拥有的进程才能提高其 nice 值”。

示范:

# ulimit -e 30
# su nobody
$ nice -n -10 top
Run Code Online (Sandbox Code Playgroud)

您将看到您的top流程运行良好-10。

现在,如果你尝试nice -n -11 top,它将与正派经营0,因为-11没有被允许RLIMIT_NICE=30。

手册页中给出了公式:允许的最大niceness 是20-rlimit。所以:

  • 0 意思是“你可以将友好度提高到 20”,也就是没用;
  • 20 意思是“你可以将niceness提高到0”,如果你降低优先级,你可以回到0;
  • 40表示“您可以启动最多nice -n -20.