正在运行一个高 CPU 消耗进程,但是 top/htop 显示所有进程 cpu 0%?

正在运行一个高 CPU 消耗进程,但是 top/htop 显示所有进程 cpu 0%?

全部。我有这些奇怪的服务器无法解释如下:

顶部

1  [|||||||||||||||                              28.5%]     Tasks: 53 total, 1 running
2  [||||||||||||||||                             31.1%]     Load average: 0.00 0.00 0.00 
3  [||||||||||||||||                             30.5%]     Uptime: 211 days(!), 02:21:04
4  [|                                             0.7%]
Mem[||||                                   171/16077MB]
Swp[                                         0/11610MB]

  PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command                                                   
    1 root      20   0  8352   840   704 S  0.0  0.0  1:02.48 init [2]
23764 root      20   0 10584  1364  1172 S  0.0  0.0  0:00.00  `- bash -c while sleep 0.000001; do echo 29150 | md5sum ; done

顶部

top - 01:36:46 up 211 days,  2:40,  5 users,  load average: 0.00, 0.00, 0.00
Tasks: 108 total,   2 running, 106 sleeping,   0 stopped,   0 zombie
Cpu(s):  4.8%us, 18.0%sy,  0.0%ni, 77.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16463184k total,   797364k used, 15665820k free,   122992k buffers
Swap: 11889656k total,        0k used, 11889656k free,   499496k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                   
1 root      20   0  8352  840  704 S    0  0.0   1:02.48 init                                                       
2 root      20   0     0    0    0 S    0  0.0   0:00.15 kthreadd                                                   
3 root      RT   0     0    0    0 S    0  0.0   0:00.14 migration/0                                                
4 root      20   0     0    0    0 S    0  0.0   0:00.22 ksoftirqd/0                                                
5 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/0                                                 
6 root      RT   0     0    0    0 S    0  0.0   0:00.16 migration/1                                                
7 root      20   0     0    0    0 S    0  0.0   0:00.09 ksoftirqd/1                                                
8 root      RT   0     0    0    0 S    0  0.0   0:00.00 watchdog/1                                                 

服务器前几天就出现这种状态,所以我尝试使用“while...md5sum”提供cpu压力,但不但while的cpu/mem使用率为0%,而且实际上其他所有的使用率都是0%。

显然,当我终止该 while 循环时,htop 栏下降到了真正的 0%(服务器实际上没有太多工作要做)。

并且我在另一台普通服务器上仔细检查了“md5sum which htop”(和顶部),它们得到了完全相同的二进制/md5 结果。

那么,有什么想法吗?我是不是被 rootkit 感染了?我已经用过 rkhunter / chkrootkit 了,一点头绪都没有。

答案1

要检查 top 或相关库是否因 rootkit 而隐藏进程,您可以在另一个系统上编译 top 的静态版本。然后复制该版本并运行它。如果您已被 root kit 化,隐藏的进程应该会显示在静态 top 中,因为它不会使用任何 rootkit 库。

关于确定可能导致问题的其他原因的一些建议:

  • 禁用尽可能多的不必要的服务(网络、iptables、auditd、selinux、sendmail、nfs、netfs、nscd 等),以限制使用额外 CPU 周期的地方。
  • 查看 /var/log/* 以查看是否有任何内容产生错误。
  • 在您的服务中启用日志记录或更详细的信息
  • 使用 dtrace 或 systemtap 等程序查看正在发生的事情

答案2

您在哪个 tty 上运行 while 循环?我有一个带有 8 个 CPU 的虚拟服务器,我通过 ssh 登录,循环最初在 4 个 CPU 上运行,后来仅在 2 个 CPU 上运行,但负载上升到 1.5,而 %CPU 仍为 0。您可以在循环运行时检查 /proc/loadavg(如果有的话)。

相关内容