它的 pid 一直在增加... 我正在写一个程序来显示所有进程的信息,这个进程真的让我很烦。哦...
中文是sleeping...
,,can't use
can't use
答案1
从技术上讲,并不是单个进程的 pid 发生了变化,而是旧进程终止,而新进程启动。
为什么不尝试找到它的父进程 ID,例如使用ps -o pid,ppid,cmd -U root
(它将在第二列中)。可能有一个父进程正在启动所有其他进程。
第一列中没有该进程的名称,这似乎很奇怪。 /proc 目录中可能还有更多线索,例如ls -l /proc/<pid>/exe
和cat /proc/<pid>/cmdline
。还可以尝试不同的ps
命令选项,例如ps -o pid,comm
和ps -o pid,args
将打印不同的信息。(在这些命令中添加-U root
或-p <pid>
。)
更新
如果该过程没有名称,可能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,那么在调查期间最好将该计算机与互联网断开连接。这样它就无法将您的任何个人数据发送给其他人,也无法发送垃圾邮件或诸如此类的事情。
答案2
我猜想这个进程是某种 rootkit 的一部分。它是故意这样做的,fork
旧的进程经常死掉,以便难以被锁定并发送类似SIGSTOP
或SIGKILL
的信号。它没有名字这一事实也表明情况确实如此。