Bash
使用大量 CPU 的神秘 bash 實例,我該如何調試?
我似乎有多個
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]
這是的輸出
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
每次我執行命令時 PID 都會發生變化,因此看起來某些東西在不斷地重生
bash
。細節:
- 有多個
[bash]
條目。如果我理解正確[process name]
意味著該程序是在沒有命令行參數的情況下啟動的。- PID 發生了變化,因此產生了這些。
- 我已註銷並重新登錄(我在 Cinnamon 工作),但問題仍然存在。
現在,我想如果我重新啟動這會消失,我的主要問題是我可以用什麼來追踪這些程序?
top -c
沒有幫助,pgrep bash
只是給了我不同的 PID 列表,lsof /bin/bash
只是列出了正在執行的 bash 實例並將pstree
它們顯示為獨立的程序。如果相關,我正在執行 Linux Mint Debian,核心 3.2.0-4-amd64,GNU bash,版本 4.2.36(1)-release。
編輯:
我已經重新啟動(我不得不),並且正如預期的那樣,問題已經消失了。不過,我仍然對如何追踪此類過程的有用建議感興趣。
看看 的輸出
lsof | grep 'bash.*cwd'
。這將告訴您程序的目前工作目錄。如果你有
pstree
,看看它的輸出。如果沒有,請查看ps aux -H
. 這將告訴您哪些程序擁有這些神秘程序。開始查看配置文件是否有任何可疑之處。這是您應該檢查的不完整列表:
~/.bash* ~/.profile /etc/profile /etc/bash* /etc/cron.*/*
[process name]
意味著ps
找不到該程序的參數,包括參數 0,其中包含為創建程序而執行的文件的名稱。這意味著lsof /bin/bash
不會找到這些程序。