Linux Niced进程优先于子进程
我已使用以下命令将最高优先级赋予sshd进程:Linux Niced进程优先于子进程,linux,nice,Linux,Nice,我已使用以下命令将最高优先级赋予sshd进程: nice -n -20 /sbin/sshd 但默认情况下,它也会将最高优先级赋予子进程(/bin/sh)。那么,是否可以将正常优先级(0)赋予子进程而不是最高优先级?不可能将正常优先级赋予niced进程的子进程,但我们可以在父进程分叉子进程之前在代码中分配正常优先级。这样,我们可以将正常优先级分配给子进程 请参阅从代码设置任何进程的优先级假定此sshd为OpenSSH v4.4或更新版本,您可能可以通过将/etc/ssh/sshd\u conf
nice -n -20 /sbin/sshd
但默认情况下,它也会将最高优先级赋予子进程(/bin/sh)。那么,是否可以将正常优先级(0)赋予子进程而不是最高优先级?不可能将正常优先级赋予niced进程的子进程,但我们可以在父进程分叉子进程之前在代码中分配正常优先级。这样,我们可以将正常优先级分配给子进程
请参阅从代码设置任何进程的优先级假定此sshd为OpenSSH v4.4或更新版本,您可能可以通过将/etc/ssh/sshd\u config中的ForceCommand选项设置为以下内容来获得所需的效果:
ForceCommand nice -n 0 $SSH_ORIGINAL_COMMAND
ForceCommand功能已记录在案。您还可以使用匹配块(记录在同一位置)修改某些端口、用户、IP地址等的行为
主要问题(文档中未提及)是,在执行初始化脚本(如bashrc等)后,ForceCommand会在用户的shell上运行,因此,在这些启动脚本完成之前,降低的优先级不会应用(希望这些脚本不会做任何计算密集型的事情……。尝试使用一个更好的命令解释器
chsh -s "/usr/bin/nice -n 0 /bin/bash" username
用您最喜欢的shell替换bash
这样做可能会得到意想不到的结果,因此,请保留一个额外的会话作为恢复选项。这可能是您问题的解决方案:@RicardoJ:对不起,我要讨论子进程的首要问题是:为什么您认为有必要以更高的优先级运行
sshd
?@paxdiablo:我正在低CPU级别的嵌入式系统中运行openssh子进程,这就是它的方式,除非您对fock()和friends进行了大量修补。例如,请参阅。如果在fork之前更改优先级,则更改也会影响父级。