为什么有一个根进程的pid一直在变化?


2

在此输入图像描述

它的pid一直在增加......我正在编写一个程序来显示所有进程的信息,这个过程真让我烦恼。
Oh..the中国话sleeping...can't usecan't use


我想你可能有某种感染。
Omnifarious

Answers:


3

从技术上讲,它不是一个单一的进程,它的pid正在改变,而是旧的进程正在终止,而一个新进程正在开始。

为什么不尝试找到它的父进程id,例如使用ps -o pid,ppid,cmd -U root(它将在第二列)。可能有一个父进程正在启动所有其他进程。

在第一列中没有该进程的名称似乎很奇怪。例如ls -l /proc/<pid>/exe,/ proc目录中可能有更多线索cat /proc/<pid>/cmdline。还可以尝试不同的ps命令选项,例如ps -o pid,commps -o pid,args打印不同的信息。(或者添加-U root-p <pid>到这些命令。)


UPDATE

如果该过程没有名称,也许pgrep '^$'会列出它,那么你可以用它做任何你喜欢的事情,例如

pgrep '^$' | while read pid; do
    ps -f $pid
    ls -l /proc/$pid/cmdline
    netstat -tlp | grep '\<'$pid'\>'
    echo kill $pid  # remove the echo after testing
done

如果pgrep '^$'没有列出任何内容,那么通常ps -o comm= -U root | od -c可以理解进程名称是什么,因此您可以使用pgrep仅查找具有该名称的进程。

如果这也失败了,请查看auditctl

或者你编写一个运行ps两次的脚本并杀死只出现在第二次运行输出中的任何进程。


此外,如果它是其他人建议的rootkit,那么在您调查时将该计算机与互联网断开是个好主意。这样,它就无法将您的任何个人数据发送给其他人,也无法发送垃圾邮件或其他类似内容。


由于pid变化非常快,当我在屏幕上显示pid并将其显示在/ proc / <pid>中时,<pid>目录已经消失了...
wong2 2011年

也许pstree会工作?
isuldor 2011年

@briankb:pstree,如果它运行得足够快并捕获了数据,则会将进程显示为init的子进程。在每种情况下,它的父亲都在叉子后面死亡,所以它最终没有父母。
Omnifarious

2

我的猜测是这个过程是某种rootkit的一部分。它故意不fork与旧的以硬牵制和发送信号一样非常频繁死亡SIGSTOPSIGKILL到。它缺少一个名字的事实也指出了这种情况。


有可能杀了它吗?
wong2 2011年

@ wong2:不是我能想到的。我真的希望内核给你一个解决这个问题的方法。也许是一种拦截所有fork调用的方法,这个进程在最后10秒内至少进行了10次fork调用。或者只是拦截所有fork调用并批准它们或拒绝它们的方法。
Omnifarious
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.