ter*_*don 5 bash process-management
我似乎有多个bash
正在运行的进程占用了我的大部分 CPU。这是输出top -c
:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20116 terdon 20 0 35288 14m 292 R 400.0 0.2 0:00.43 /bin/bash
20106 terdon 20 0 35992 15m 280 R 95.9 0.2 0:00.65 /bin/bash
20105 terdon 20 0 0 0 0 R 57.6 0.0 0:00.83 [bash]
Run Code Online (Sandbox Code Playgroud)
这是输出ps aux | grep bash | head -3
:
terdon 7487 45.3 0.0 0 0 ? R 19:31 0:01 [bash]
terdon 7488 66.0 0.0 0 0 ? R 19:31 0:01 [bash]
terdon 7530 23.0 0.2 37984 17408 ? R 19:31 0:00 /bin/bash
Run Code Online (Sandbox Code Playgroud)
每次我运行命令时,PID 都会改变,所以看起来有些东西在不断地重新生成bash
。
细节:
[bash]
条目。如果我理解正确[process name]
意味着该进程是在没有命令行参数的情况下启动的。现在,我想如果我重新启动,这会消失,我的主要问题是我可以用什么来跟踪这些进程?
top -c
没有帮助,pgrep bash
只是给了我不同的 PIDlsof /bin/bash
列表,只是列出了正在运行的 bash 实例并将pstree
它们显示为独立的进程。
如果相关,我正在运行 Linux Mint Debian,内核 3.2.0-4-amd64,GNU bash,版本 4.2.36(1)-release。
编辑:
我已经重新启动(我不得不重新启动),并且正如预期的那样,问题已经消失了。不过,我仍然对如何追踪此类过程的有用建议感兴趣。
小智 6
看一下输出lsof | grep 'bash.*cwd'
。这将告诉您进程的当前工作目录。
如果有pstree
,请查看它的输出。如果没有,请查看ps aux -H
. 这将告诉您哪些进程拥有这些神秘进程。
开始查看配置文件以查找任何可疑内容。这是您应该检查的不完整列表:
~/.bash*
~/.profile
/etc/profile
/etc/bash*
/etc/cron.*/*
Run Code Online (Sandbox Code Playgroud)
这[process name]
意味着ps
找不到该进程的参数,包括参数 0,其中包含为创建进程而执行的文件的名称。这意味着lsof /bin/bash
不会找到这些进程。