我使用以下命令为sshd进程赋予了最高优先级:
nice -n -20 /sbin/sshd
但是默认情况下也会给予子进程(/bin/sh)最高优先级,那么,有没有可能给子进程普通优先级(0)而不是最高优先级呢?
omhiaaxx1#
假设这个sshd是OpenSSH v4.4或更高版本,您可以通过将/etc/ssh/sshd_config中的ForceCommand选项设置为如下内容来获得所需的效果:
ForceCommand nice -n 0 $SSH_ORIGINAL_COMMAND
ForceCommand功能在here中有说明。您还可以使用Match块(在同一位置有说明)修改某些端口、用户、IP地址等的行为。主要的问题(文档中没有提到)是,ForceCommand在初始化脚本(例如,bashrc等)执行之后在用户的shell上运行,所以降低的优先级不会应用,直到这些启动脚本完成(希望这些脚本没有做任何计算密集型的事情...)。
dkqlctbz2#
不可能给niced进程的子进程给予普通优先级,但是我们可以在子进程的fork()之后exec()之前的父进程代码中指定普通优先级,这样我们就可以给子进程指定普通优先级。参考setpriority设置代码中任何进程的优先级
fork()
exec()
wlp8pajw3#
尝试使用niced shell命令解释器。
chsh -s "/usr/bin/nice -n 0 /bin/bash" username
用您喜欢的shell替换bash。这样做可能会得到意外的结果,所以请保持一个额外的会话打开作为恢复选项。
3条答案
按热度按时间omhiaaxx1#
假设这个sshd是OpenSSH v4.4或更高版本,您可以通过将/etc/ssh/sshd_config中的ForceCommand选项设置为如下内容来获得所需的效果:
ForceCommand功能在here中有说明。您还可以使用Match块(在同一位置有说明)修改某些端口、用户、IP地址等的行为。
主要的问题(文档中没有提到)是,ForceCommand在初始化脚本(例如,bashrc等)执行之后在用户的shell上运行,所以降低的优先级不会应用,直到这些启动脚本完成(希望这些脚本没有做任何计算密集型的事情...)。
dkqlctbz2#
不可能给niced进程的子进程给予普通优先级,但是我们可以在子进程的
fork()
之后exec()
之前的父进程代码中指定普通优先级,这样我们就可以给子进程指定普通优先级。参考setpriority设置代码中任何进程的优先级
wlp8pajw3#
尝试使用niced shell命令解释器。
用您喜欢的shell替换bash。
这样做可能会得到意外的结果,所以请保持一个额外的会话打开作为恢复选项。