2016-04-22 88 views
1

我想編寫一個bash腳本,將當前CPU利用率寫入文件「logfile」。我使用英特爾®酷睿™i7-4500U CPU @ 1.80GHz×4和Ubuntu 15.10。Bash腳本:將CPU利用率寫入文件(Ubuntu)

我已經在這個論壇上看到過類似的問題,但並不是所有的問題都被回答爲100%。通過我的研究,我想出了兩種實現我的目標的可能方式。第一個是

mpstat | grep "all" | awk '{ print $3 + $5; }' >> logfile 

(添加用戶CPU和系統CPU)和我的第二候選是

mpstat | grep "all" | awk '{ print 100 - $12; }' >> logfile 

(100 - %空閒的CPU)。如果我對CPU的總利用率感興趣(因此應該包括以某種形式計算爲CPU的所有組件),那麼這兩者中哪一個對我來說是正確的。

另一個問題:通過什麼我已經通過閱讀其他線程瞭解到,我想我的第二個候選

mpstat | grep "all" | awk '{ print 100 - $12; }' >> logfile 

應該是相當準確的。但是,當我打開「系統監視器」並監視「CPU歷史記錄」時,我觀察到顯着不同的CPU利用率。另一件事是系統監視器中的值非常動態(CPU在4%和18%之間變化),而在同一時期,第二個命令的結果幾乎保持不變。有人有解釋嗎?

非常感謝所有評論!

+0

您是否看到系統監視器的利用率顯着高於此腳本**在同一時間**返回的數量?或者可能是額外的CPU使用率僅僅是系統監視器使用更多的CPU來生成GUI並繪製使用圖? –

+0

是的,我打開了系統監視器,在執行此操作時,我幾次將第二個命令打入終端。我剛剛觀察到,這些值也可以(顯着)較低。另一件事是系統監視器中的值非常動態(CPU在4%和18%之間變化),而在同一時期,第二個命令的結果幾乎保持不變 - 我在帖子中編輯了這個值。 – BJPrim

+0

我建議安裝[GNU會計實用程序](https://apps.ubuntu.com/cat/applications/precise/acct/)。 –

回答

2

發生這種情況是因爲mpstat的第一行顯示了系統啓動後的平均值(這會更加穩定)。

報價從mpstat手冊頁:

的間隔參數指定的時間在每個報告之間秒 量。值爲0(或根本沒有參數) 表示自系統啓動(引導)以來,處理器統計信息將在 時間內報告。

如果添加的時間間隔參數,你會開始找回生活的數字,這應該更符合你的系統監視器輸出(請嘗試執行mpstat 1與平原mpstat)。

因此,這種猛砸行應該做的伎倆:

mpstat 1 1 | grep "all" | awk '{ print 100 - $NF; exit; }' >> logfile 

,並做纔不至於grep(節省額外的過程產卵):

mpstat 1 1 | awk '/all/{ print 100 - $NF; exit; }' >> logfile 

(改變$12$NF爲當第一行有時間並且移動參數時;用$NF我們始終得到最後的值,這是空閒值)

+0

謝謝你,這麼好,簡單和完美的解決方案!現在,來自mpstat的CPU利用率確實與系統監視器完全相同(就我所知,只需通過我的眼睛監控就可以知道)。非常感謝! – BJPrim

+0

@BJPrim還不完美,它仍然有一個'grep'可以刪除:) –

+0

噢,好的,謝謝你的進一步改進:) – BJPrim