linux抓取top命令中數據的方法


top在linux中是一個非常直觀的命令,可以清晰地看到各進程對資源的使用情況。

 

但是如果你想從top命令展示中提取某些數據出來,如果想當然地使用這句命令:

top|grep xxx

就會被卡住,欲哭無淚。

 

我們不妨查一下top這個命令,看看是否有其他辦法來把數據抓出來。

 

首先簡單了解一下top這個命令。

 

top是linux的一個性能分析工具,類似於windows的任務管理器。其最大特點有兩個:動態、直觀地顯示進程占用資源情況。

執行top的時候,會在前台默認打開一個terminal,可使用q來退出。

例如:

 

上面的圖中,有很多有用的信息:

1. 可以看到uptime、1min 5min 15min的負載
2. 可以看到總任務數、在跑任務數、停止任務數、僵屍任務數
3. 可以看到user數
4. 可以看到總的cpu負載情況
5. 可以看到總的內存和swap使用情況,以kb為單位
6. 各個進程使用系統資源的情況

 

上面的各列分別指:

PID: 進程號
USER: 啟動進程的用戶
PR: 優先級
NI: 謙讓級
VIRT: 虛擬內存占用
RES: 進程使用的、未被換出的物理內存大小
SHR: 共享內存大小,單位kb
S: 進程狀態(D=不可中斷的睡眠狀態,R=運行,S=睡眠,T=跟蹤/停止,Z=僵屍進程)
%CPU: 上次更新到現在的CPU時間占用百分比
%Mem: 物理內存占用百分比
TIME+: 進程啟動時間
COMMAND: 命令名

 

而這個命令也有一些參數,具體可以看下邊:

-b: 批處理
-c: 顯示完整的命令
-l:忽略失效進程
-s: 保密模式
-n 數字: 顯示次數,后加
-u 用戶名: 顯示某用戶下的進程情況
-p 進程號: 指定進程

 

top還有一些交互命令,在前置頁面使用,十分方便:

h: 顯示幫助菜單
k: 殺死一個進程
i: 忽略僵屍進程
P: 按照CPU占用進行排序
M: 按照內存占用進行排序
T: 根據時間/累計時間進行排序
W: 將結果保存到~/.toprc文件

 

好了,介紹了一圈之后,到了本文的重點了。如果我要抓出mysql進程,查看其性能情況並取數,可使用以下兩種方法:

top -u mysql -n 1|grep mysqld|awk '{print $9}'   #取CPU占用數據
top -u mysql -n 1|grep mysqld|awk '{print $10}'  #取內存占用數據

或者:

top -b -n 1|grep mysql|awk '{print $9}'    #取CPU占用數據
top -b -n 1|grep mysql|awk '{print $10}'   #取內存占用數據

而抓取數據只是前置步驟,后續可以使用此數據進行各種后續操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM