我已经在这个网站和其他许多网站上搜索过,但我有一个进程一直以 100% 的 CPU 运行了 9,729 个小时。根据 htop,这是我的 Debian Jessie Web 服务器上由“root”运行的命令:
find ./ -name mysqli.so -print
我无法弄清楚是什么原因导致该命令运行,并且向其 PID 发出“kill -9”没有任何效果。
其余一切似乎都按预期运行——我甚至没有意识到这个问题已经持续了这么久,这证明了这一点。但是,由于它一直占用着整个 CPU 核心,所以我想解决这个问题。
我唯一没有尝试过的事情是重新启动服务器——这是不切实际的,因为这是一个生产服务器。
答案1
首先,尝试发送它SIGSTOP
以实际停止其执行(这可能会被命令捕获和忽略,但值得尝试)。
接下来,这看起来很可疑。由于任何进程都可以自由更改进程列表中显示的文本(某些程序(如 MTA)出于合法目的一直这样做),因此可能可能是你的机器被黑了,并且进程实际上不是find
别的而是别的东西(比如加密矿工)。
有几种方法可以尝试检查它的真正含义。
尝试查看它是什么可执行文件:
# stat /proc/$pid/exe
应该向您显示该进程中正在运行的二进制可执行文件。
观察该进程的文件系统活动可能会有所帮助:
# watch vdir /proc/$pid/fd
如果它确实表现为打开和关闭大量文件,那么它很可能真的
find
。该进程一定不能打开任何套接字(可在同一层次
/proc/$pid/fd
结构中查看)。你可以
strace
看看它是否确实反复打开和关闭目录 - 运行# strace -p $pid
并监视
opendir
系统调用fdopendir
。查看
debsums
。