在 Linux ’top’ 命令中,有什麼方法可以跟踪值嗎?
我正在使用 Linux“top”命令來監控特定程序的 %CPU。由於值每隔幾秒鐘就會不斷變化,有沒有辦法在單獨的文件中或作為圖形表示來跟踪值?是否可以使用任何 shell 腳本來做到這一點?
這個問題的答案可以從簡單的命令到復雜的監控工具,具體取決於您的需要。
您可以從簡單地執行開始
top -b -n 1 >> file.txt
(-b 用於批處理模式,-n 1 用於執行 top 的單次迭代)並將輸出(附加)儲存在 file.txt 中。您還可以過濾“top”輸出,例如top -b -n 1 | grep init
僅查看“init”程序的數據或top -b -n 1 | grep "init" | head -1 |awk '{print $9}'
獲取 init 程序數據的第 9 列(CPU 值)。如果你想在 shell 腳本中使用,你可以:
CPU=$(top -b -n1 | grep "myprocess" | head -1 | awk '{print $9}') MEM=$(top -b -n1 | grep "myprocess" | head -1 | awk '{print $10}')
或者,單次執行 top:
read CPU MEM <<<$(top -b -n1 | grep "myprocess" | head -1 | awk '{print $9 " " $10}')
(請注意,grep、head 和 awk 可以合併到一個 awk 命令中,但為了簡單起見,我使用了單獨的命令)。
我們在此範例中使用了 top,但對於其他指標(檢查
sar
、iostat
、vmstat
、iotop
、ftop
,甚至讀取 /proc/*)還有其他方法。現在您可以訪問數據(CPU 使用率)。在我們的範例中,我們將其附加到文本文件中。但是您可以使用其他工具來儲存數據,甚至繪製它們:使用 gnuplot/python/openoffice 儲存在 csv 和圖形中,使用 zabbix、rrdtools、cacti 等監控和繪圖工具。有一個很大的監控工具世界允許收集和繪製數據,如 CPU 使用率、記憶體使用率、磁碟 io,甚至自定義指標(mysql 連接數等)。
編輯:最後,為了具體回答您的問題,如果您想輕鬆跟踪更改以進行簡單測試,您可以
top -b -n 1 >> /tmp/file.txt
在 /etc/crontab 文件中執行,每 5 分鐘執行一次 top (或任何其他時間間隔,如果您更換下面的 /5)。0-59/5 * * * * root top -b -n1 >>/tmp/output.txt
(如果您只對單個程序數據進行測試,則在上面的命令中使用 grep + head -1)。
注意 output.txt 會增長,所以如果你想每天或每週重置它,你可以用另一個 crontab 條目“rm”它。