终止的 bash 进程不断重新启动

终止的 bash 进程不断重新启动

服务器有一个正在运行的bash进程,CPU使用率为2200%:

$ ps aux | grep 10986
root     10986 2198  1.8 2483184 2437820 ?     Ssl  13:23 962:25 -bash

该进程有 22 个-bash线程,如图所示htop

htop 截图

使用时strace,父进程保持epoll_pwait(),子线程保持sched_yield()

我尝试过kill -9 10986,但是几分钟后,bash 进程重新启动,并且 CPU 使用率仍然很高。

有人告诉我,几个小时前他曾经screen运行过如下 bash 脚本:

./prog <arg1>
./prog <arg2>
./prog <arg3>
...

但当他再次登录时整个目录消失了,并且该进程仍然无法终止。

答案1

您需要终止所有用户的 bash 会话,而不是逐个终止自我再生的进程:pkill -9 bash从启动所有这些会话的用户开始。

要跟踪启动新 bash 进程的内容,请运行终端。然后journalctl -f | grep bash在其中运行并查看在某个 bash 进程被终止后发生了什么变化。您现在无法终止所有 bash 进程,因为这将终止 journalctl 会话。

您还可以尝试ps f -g PID查看一些 bash 进程树。这些 bash 进程是您需要获取其名称的某个父进程的子进程。

如果被终止的进程再次被重新生成,那么它们将在 crontab 中安排或由 systemd 服务启动。

答案2

我也遇到过同样的病毒

您可以检查/etc/cron*/sync. 使用chattr -i使其可删除。然后删除它。病毒 exe 是/bin/sysdrr

我找到了它,jounalctl | grep cron这一行与May 13 09:17:01 micagent-S2600CW CRON[31589]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)病毒进程的启动时间相匹配。所以我查看了一下,发现-bash正在执行并被删除。

sudo crontab -e没有显示这个地方。我不熟悉。对于像我这样的新手,请转到 /etc/cron*/sync。

相关内容