【问题标题】:Niced process gives their priority to child processNiced 进程优先考虑子进程
【发布时间】:2014-05-19 05:36:47
【问题描述】:

我已使用以下命令为 sshd 进程提供最高优先级:

nice -n -20 /sbin/sshd

但默认情况下它也会给子进程(/bin/sh)最高优先级。那么,是否可以将正常优先级(0)赋予子进程而不是最高优先级?

【问题讨论】:

标签: linux nice


【解决方案1】:

不可能为niced进程的子进程分配正常优先级,但我们可以在父进程派生子进程之前在代码中分配正常优先级,这样我们就可以为子进程分配正常优先级。

请参阅setpriority 以从代码中设置任何进程的优先级

【讨论】:

  • 如果您在分叉之前更改优先级,该更改也会影响到父级。
【解决方案2】:

假设这个 sshd 是 OpenSSH v4.4 或更高版本,您可能可以通过将 /etc/ssh/sshd_config 中的 ForceCommand 选项设置为类似以下内容来获得所需的效果:

ForceCommand nice -n 0 $SSH_ORIGINAL_COMMAND

ForceCommand 功能已记录在 here。您还可以使用 Match 块(记录在同一位置)来修改某些端口、用户、IP 地址等的行为。

主要问题(文档中未提及)是 ForceCommand 在执行初始化脚本(例如 .bashrc 等)后在用户的 shell 上运行,因此在这些启动脚本完成之前,降低的优先级将不适用(希望那些没有做任何计算密集型的事情......)。

【讨论】:

    【解决方案3】:

    尝试使用漂亮的shell 命令解释器。

    chsh -s "/usr/bin/nice -n 0 /bin/bash" username
    

    用你最喜欢的 shell 替换 bash。

    这样做你可能会得到意想不到的结果,所以请保持一个额外的会话打开作为恢复选项。

    【讨论】:

      猜你喜欢
      • 2012-11-29
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-25
      • 2022-06-16
      • 2010-10-27
      相关资源
      最近更新 更多