![优先考虑 ssh 登录(很好)](https://linux22.com/image/574188/%E4%BC%98%E5%85%88%E8%80%83%E8%99%91%20ssh%20%E7%99%BB%E5%BD%95%EF%BC%88%E5%BE%88%E5%A5%BD%EF%BC%89.png)
有没有一种首选方法可以为 sshd 设置“nice”?
我需要优先考虑 sshd,以便我可以登录并在出现问题时轻松修复问题(例如 DoS、行为不当的进程等)
答案1
您可以在 中为您的首选用户帐户或用户组指定一个不错的值/etc/security/limits.conf
,至少如果我们谈论的是 Linux。然后当您通过 sshd 登录时,您将获得 X 的不错值,无论您将其设置为什么。
根据我的经验,内核中的 CPU 调度程序现在非常好,很难仅通过消耗 CPU 周期来使服务器变得难以管理的缓慢,shell 通常会在合理的时间内做出响应。
如果您的服务器无法通过 ssh 响应您,那么它很可能正在过度交换。如果服务器将所有时间都用于将页面从内存交换到磁盘,那么一切都会花费很长时间。
这就是为什么更好的方法是设置cgroups
,这样您的用户总是有一些空闲的 CPU 周期/内存/其他资源。正如 viqrto 所说,它可能有帮助,也可能没有帮助。
答案2
答案3
现在可以使用 linux-pam 来实现这一点。
在基于 RHEL 的系统上,编辑
六、/etc/pam.d/sshd
添加以下行:
会话可选 pam_exec.so /path/to/your/script.sh
script.sh示例:
#!/bin/bash -xv
exec 1>> /var/log/pam_exec.log
exec 2>&1
function reniceChildren {
sleep 2
sshdpids="$(getchildren $PPID)"
for p in $sshdpids; do
ionice -c 3 -p $p
renice -n 19 -p $p
done
}
function getchildren {
if [ "$1" == "" ]; then
return;
fi;
result="$(pgrep -P $1)";
echo "$result";
getchildren "$result";
}
echo $PPID
ps $PPID
printenv
reniceChildren &