Linux

如何查找過去一次正在執行的程序?

  • January 28, 2016

我被要求調查今天早上發生的 CPU 使用率過高警報。我使用sar -p並看到當時出現的高 CPU 使用率

接下來我曾經ps -eo pcpu,pid,user,args | sort -r -k1 | less列出這個時間前 10 名的記憶豬

現在我如何找出在早上的特定時間是哪些程序導致了瓶頸。我是 Java 開發人員,而不是 Linux 專家。

甚至可能嗎?

有幾種選擇:

  1. 使用定期將所需數據寫入日誌文件的腳本。您可以使用 cron 每 x 分鐘將 ps (和其他命令)的輸出寫入日誌文件。
  2. 最好是使用專門的程序,它會為您執行此操作。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 易於理解和使用,是一個良好的開端。

引用自:https://serverfault.com/questions/752481