Linux
如何查找過去一次正在執行的程序?
我被要求調查今天早上發生的 CPU 使用率過高警報。我使用
sar -p
並看到當時出現的高 CPU 使用率接下來我曾經
ps -eo pcpu,pid,user,args | sort -r -k1 | less
列出這個時間前 10 名的記憶豬現在我如何找出在早上的特定時間是哪些程序導致了瓶頸。我是 Java 開發人員,而不是 Linux 專家。
甚至可能嗎?
有幾種選擇:
- 使用定期將所需數據寫入日誌文件的腳本。您可以使用 cron 每 x 分鐘將 ps (和其他命令)的輸出寫入日誌文件。
- 最好是使用專門的程序,它會為您執行此操作。atop 非常擅長這一點,它負責日誌文件的保留。
atop 可通過 CentOS/RHEL/Fedora 的 EPEL 儲存庫和 Debian/Ubuntu 的預設儲存庫獲得。
您可以像普通的實時 top 實用程序一樣使用 atop,但行為略有不同(請查看手冊頁以了解擊鍵)。
更有趣的部分是:一旦安裝了守護程序,就會開始將數據記錄到 /var/log/atop 中,您可以再次使用 atop 讀取這些文件:
atop -r /var/log/atop/atop_20160128
然後,您可以訪問所有“頂級”功能(排序/查看記憶體/CPU/IO 使用情況等),您可以通過“t”及時向前跳 10 分鐘,用“T”向後跳 10 分鐘或跳到通過“b”指定時間。
查看頂部的聯機幫助頁,Google有很多關於它的方法。
可能還有其他解決方案,但在進行更多定制設置之前,atop 易於理解和使用,是一個良好的開端。