4

我使用以下命令给予 sshd 进程最高优先级:

nice -n -20 /sbin/sshd

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

4

3 回答 3

4

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

ForceCommand nice -n 0 $SSH_ORIGINAL_COMMAND

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

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

于 2014-04-14T16:56:16.273 回答
1

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

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

于 2014-04-12T05:56:38.930 回答
-2

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

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

用你最喜欢的 shell 替换 bash。

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

于 2014-04-16T02:09:46.563 回答