我的目标是sshd
使用我自己的配置文件在非特权端口(例如 2222)上启动第二个实例。
显然,该sshd
进程不能setuid
以运行sshd
守护程序的用户以外的用户身份登录,这显然是不可能的。
但是,是否有可能有一个工作sshd
守护程序适用于当前正在运行的用户?对于我的用例,这很好。
我尝试sshd
使用我自己的配置文件和主机密钥启动一个实例,然后sshd
进程启动(没有关于不是 root 的抱怨,就像某些命令一样),但是当我尝试连接到该端口时,sshd
进程终止了。
$ /usr/sbin/sshd -dD -h .ssh/id_rsa -p 2222
debug1: sshd version OpenSSH_5.6p1
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug1: setgroups() failed: Operation not permitted
debug1: rexec_argv[0]='/usr/sbin/sshd'
debug1: rexec_argv[1]='-dD'
debug1: rexec_argv[2]='-h'
debug1: rexec_argv[3]='.ssh/id_rsa'
debug1: rexec_argv[4]='-p'
debug1: rexec_argv[5]='2222'
debug1: Bind to port 2222 on 0.0.0.0.
Server listening on 0.0.0.0 port …
Run Code Online (Sandbox Code Playgroud) 根据http://net-snmp.sourceforge.net/docs/mibs/ucdavis.html#scalar_notcurrent ssCpuUser
、ssCpuSystem
、ssCpuIdle
等被弃用,以支持原始变体(ssCpuRawUser
等)。
前一个值(不包括 nice、wait、kernel、interrupt 等)返回一个百分比值:
在最后一分钟内计算的处理用户级代码所花费的 CPU 时间百分比。
此对象已被弃用,取而代之的是“
ssCpuRawUser(50)
”,它可用于计算相同的指标,但可以在任何所需的时间段内计算。
原始值返回 CPU 花费的“原始”滴答数:
处理用户级代码所花费的“滴答”数(通常为 1/100 秒)。
在多处理器系统上,“
ssCpuRaw*
”计数器在所有 CPU 上累积,因此它们的总和通常为 N*100(对于 N 个处理器)。
我的问题是:如何将刻度数转换为百分比?
也就是说,你怎么知道每秒有多少滴答声(通常——这意味着不总是——1/100s,这意味着每 100 秒一次,或者滴答声代表 1/100 秒)。
我想您还需要知道有多少个 CPU,或者您需要获取所有 CPU 值以将它们加在一起。我似乎找不到一个 MIB,它可以为您提供 CPU 数的整数值,这使得前一条路线很尴尬。后一条路线似乎不可靠,因为一些数字重叠(有时)。例如,ssCpuRawWait
有以下警告:
此对象不会在底层操作系统不测量此特定 CPU 指标的主机上实现。 该时间也可能包含在“
ssCpuRawSystem(52)
”计数器内。
一些帮助将不胜感激。似乎到处都在说 % 已被弃用,因为它可以派生,但我还没有找到任何显示执行此派生的官方标准方法的地方。
第二个组成部分是这些“滴答声”似乎是累积的,而不是在某个时间段内。如何在一段时间内对值进行采样?
我想要的最终信息是:“当前”(过去 1-60 秒可能就足够了)的用户、系统、空闲、好(理想情况下是窃取,尽管似乎没有标准 MIB)的百分比,偏好较小的时间跨度)。