Node.js项目中PostgreSQL关联kthreaddk进程导致Ubuntu服务器CPU占用100%,如何永久终止该进程?
关于Ubuntu服务器kthreaddk进程CPU占满的问题解答
兄弟,先给你敲个关键结论:正常Linux系统里不存在kthreaddk这个进程,你遇到的是伪装成系统进程名的恶意挖矿木马!正经负责内核线程管理的系统进程是kthreadd(注意最后只有一个k),这个冒牌货就是靠模仿系统进程名躲查杀,杀了立刻复活是因为它已经在你服务器里埋了自启动的“后门”。
一、先搞懂这个恶意进程的套路
这类挖矿木马会偷偷植入定时任务、systemd服务或者启动脚本,一旦你用killall -9干掉它,守护进程或者定时任务会立刻重新拉起它,所以你才会看到30秒后又满血复活,CPU直接拉满。
二、彻底清除kthreaddk的实操步骤
我之前帮朋友处理过一模一样的情况,按下面的步骤来,能彻底干掉它:
- 先冻结进程,防止它立刻重启
别上来就kill -9,先找到它的PID(用ps aux | grep kthreaddk就能查到),然后执行:
这个命令会暂停进程的运行,给你留足够的时间清理它的自启动项,不会刚杀完就立刻复活。kill -STOP [进程PID] - 揪出它的自启动“后手”
挖矿木马肯定留了重启的办法,挨个检查这些地方:- 定时任务:执行
crontab -l看当前用户的定时任务,再打开/etc/crontab和/etc/cron.d/目录,里面有没有奇怪的脚本路径(比如指向/tmp、/var/run这类临时目录的)。 - systemd服务:执行
systemctl list-unit-files | grep enabled,找那些名字莫名其妙的启用服务,尤其是和挖矿、kthreaddk沾边的。 - 启动脚本:检查
/etc/init.d/、/etc/rc.local这几个启动目录,有没有可疑的执行命令。
- 定时任务:执行
- 删除恶意进程的本体文件
找到进程的真实执行路径:
这个命令会显示它的真实文件位置(比如ls -l /proc/[进程PID]/exe/tmp/xyz或者/usr/local/bin/xxx),直接用rm -rf [文件路径]彻底删掉它。 - 清理所有自启动配置
- 如果在crontab里找到可疑任务,用
crontab -e打开编辑,删掉对应的行。 - 如果是systemd服务,先执行
systemctl stop [服务名],再systemctl disable [服务名],最后去/etc/systemd/system/或/usr/lib/systemd/system/目录删掉对应的服务文件。 - 把启动脚本里的可疑内容全部删除。
- 如果在crontab里找到可疑任务,用
- 重启系统并验证
最后重启服务器,用top或者htop查看CPU占用率,再执行ps aux | grep kthreaddk确认进程已经消失。
三、额外的安全提醒
- 这类木马大概率是通过服务器的漏洞入侵的,赶紧检查你的Node.js项目依赖、PostgreSQL版本有没有未修复的安全漏洞,服务器的SSH密码是不是弱密码,有没有开放不必要的端口。
- 顺便排查下服务器里有没有其他挖矿相关进程,比如
minerd、xmrig这类,一并清理干净。
内容的提问来源于stack exchange,提问作者Mohammad Yaser Ahmadi
相关产品推荐
相关产品推荐

