1. 程式人生 > >巧用linux-top的批處理模式

巧用linux-top的批處理模式

核心 了解 batch color 選項 顯示 lee top 你會

IT技術學習:一種是采用循序漸進的系統式學習;一種是采用“投機取巧”的碎片式學習。我這個人比較賴,也沒有那些大牛執著的精神和水平,所以只能和大家分享後者

top命令-是UNIN&&LINUX系統自帶的系統管理工具。可以實時顯示系統性能(負載、進程、運行時間)等多個指標。流行的網絡教程是以交互式(實時)方式進行教學 ,實際上top還自帶的強大的batch mode,來幫助你事半功倍。通常在
交互式模式,只需要在shell下直接運行top即可,如下
技術分享圖片

實時模式好處是可以實時的觀察系統狀態,但是缺點也是明顯

  1. 在不考慮使用第三方監控工具的情況下,如何記錄和查看某項值的記錄(歷史的和當前的)
    比如我需要知道在某段時刻,系統運行了多少個tasks,難道需要盯著屏幕看嗎?
  2. 如何將系統指標集合SHELL腳本來處理?首先結果需要輸出。然後才能用你需要的邏輯調用進輸入,處理完成後再輸出
    這些其實都可以通過批處理模式來處理。

top-批處理模式在-SHELL下啟動通過選項b來控制

  • -b : runs top in batch mode
    使用批處理模式後,最核心的就是可以導出內容
    我們來看第一個例子

導出一次的TOP輸出

top -b -n 1 > top.txt
cat top.txt

你會驚奇的發現top的內容居然可以輸出到file
技術分享圖片

當然可以可以-n參數來連續獲取快照

top -b -n 5 > top-5iterations.txt
cat top-5iterations.txt | grep Tasks

獲取5次快照,然後過濾出tasks任務
技術分享圖片

接下來,我們用crond(計劃任務進程)來看一下進程的輸出

$ pidof crond #獲取pid
$ top -p 536 -b -n3 > cron.txt #輸出
$ cat cron.txt

技術分享圖片

最後我們來結合一個shell命令來連續獲取進程情況,如下

for i in {1..8}; do sleep 2 && top -b -p 536 -n1 | tail -1 ; done >> cron.txt
cat cronta.txt

在實際效果中,為了讓大家了解每列的含義,我顯示了每列的頭部字段名,如下
技術分享圖片

我們也可以利用批處理模式對當前的進程內存使用情況進行一個排序

top -b -o +%CPU | head -n 22 #排列最占用CPU的進程

技術分享圖片

本文只是拋磚引玉,具體使用,請大家積極開動腦筋
以上測試系統CENTOS7.2 其它LINUX發型版,請自行測試

巧用linux-top的批處理模式