Bash

使用大量 CPU 的神秘 bash 實例,我該如何調試?

  • September 23, 2020

我似乎有多個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不會找到這些程序。

引用自:https://unix.stackexchange.com/questions/81639