Time:2019-8-25 16:19
Site:深圳科興科學院
Author: strivewang
- top工具的介紹
- ps指令及參數的詳細介紹
- grep配合其它指令的妙用
最常見的性能分析工具 top(類似於Windows 任務管理器)
top 命令是 Linux 下常用的性能分析工具,能夠實時的顯示當前系統下各個進程的資源佔用情況。
下面就是 top 命令的局部截圖:
下面將介紹 top 命令後每個字段的含義:
top - 16:38:04 up 46 days, 7 min, 1 user, load average: 0.00, 0.00, 0.00
第一行:分別顯示:1、系統當前時間 2、系統已運行時間(開機至今) 3、當前系統用戶登錄數 4、系統平均負載(分別是1min、5min、15min的平均負載)。我的這個雲服務器是單核的,所以負載在 0~1 之間都是正常的。所以N個核心的的平均負載應該在 0~N ,不能超過這個N值。
Tasks: 115 total, 2 running, 113 sleeping, 0 stopped, 0 zombie
第二行:分別顯示:1、total就是 系統當前進程總數 2、running(當前運行進程數) 3、sleeping(睡眠的進程數) 4、zombie(殭屍進程數)
%Cpu(s): 1.0 us, 0.0 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
第三行:分別顯示:1、%CPU(顯示CPU佔用百分比) 2、us(用戶佔用百分比) 3、sy(系統內核佔用百分比) 4、ni(用戶進程改變過進程優先級的進程佔用百分比) 5、id(系統CPU剩餘百分比) 6、wa(等待I/O 的進程佔用百分比) 7、hi(Cpu 處理硬中斷的時間) 8、si(Cpu處理軟中斷的時間)、9、st(用於虛擬cpu的時間) 。上面的參數太多,不可能全部記住,只需要查看最關鍵的信息即可。綜上所述,看一個系統的 cpu的負載,就可以看 id,看他的數值就知道了系統當前 cpu 的繁忙程度。
KiB Mem : 1917156 total, 88236 free, 319380 used, 1509540 buff/cache
第四行:顯示物理內存的數據, 分別顯示:1、total(物理內存總量) 2、free(剩餘物理內存量) 3、used(已使用物理內存量) 4、buff/cache(用作內核緩存的量)
KiB Swap: 0 total, 0 free, 0 used. 1338624 avail Mem
第五行: 顯示交換器(SWAP)的數據, 1、total(交換區總量) 2、free(閒餘量) 3、used(已使用交換區量) 4、avail Mem(可換取總量)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
第六行:分別顯示:1、PID(進程號) 2、USER(運行用戶) 3、PR(進程優先級) 4、NI(任務nice值,負值表示高優先級,正值表示低優先級) 5、VIRT(進程使用虛擬內存量) 6、RES(進程使用的物理內存量) 7、 SHR(共享內存使用量) 8、S(進程當前狀態) 9、%CPU (CPU佔用百分比) 10、 %MEM(物理內存佔用百分比) 11、TIME(進程使用的CPU時間,單位1/100秒) 12、COMMAND(進程名稱/命令行)
最強悍的指令-PS (process status)
Linux 中的 ps 指令是列出當前在運行的進程的快照(就是執行ps這一刻進程的快照信息),如果需要動態的顯示進程信息,據需要使用上面介紹的 top 指令。
最近在工作中就遇到了一個問題,我使用腳本停止當前的一個任務,結果就是 報錯,權限不被允許,用 ps 指令一看,是 root 啓動的這個腳本,普通用戶沒有權限 kill,所以 ps 在工作中很是常用。
ps 命令可以查看進程的運行狀態,佔用什麼資源等等。配合具體的參數就是如虎添翼。
下面將展示常用的 ps 參數:
參數 | 功能 |
---|---|
a | 顯示所有進程 |
-a | 顯示在同一終端下的所有程序 |
-A | 現實所有進程 |
c | 顯示進程的真實名稱 |
-e | -e 等於 -A |
e | 顯示環境變量 |
f | 顯示程序間的關係 |
-H | 顯示樹狀結構 |
r | 顯示當前終端的進程 |
T | 顯示當前終端的所有程序 |
u | 指定用戶的所有進程 |
-au | 顯示較詳細的資訊 |
-aux | 顯示所有包含其他使用着的行程 |
-C | 列出指定命令的狀況 |
–help | 顯示幫助信息 |
–version | 顯示版本 |
這裏列出工作中最常見的參數用法:
- ps -ef
- ps -aux //-aux 更爲詳細一些,會列出各種資源佔用情況
- ps -ef | grep “xxx” //各種指令配合 grep “” 可以對自己想要的信息進行篩選,提高開發效率。
- ps -aux | grep “xxx” //如上類似
最常見的篩選指令 grep
grep是Linux中最常見的文本處理工具,grep、awk、sed稱之爲 Linux 中的三劍客(NP吧,快學)。
今天介紹的是 grep 配合 上述調試指令:
可以通過 “|” 管道 ,然後讓 grep 進行關鍵詞篩選出自己想要的內容
ps -ef | grep "xxx"
可以通過上述的方式篩選出 ps 指令的結果
cat xxx.txt | grep "xxx"
也可以篩選文本文件中自己想要的關聯內容
tailf xxx.log | grep "xxx"
最爲常見的就是這種用法,查看日誌文件,調試的時候就要觀看自己想要的值
今天的最常見,也是最實用的指令介紹就到此爲止,下一篇就將會介紹最實用的網絡分析工具:ping、tcpdump、netstat、lsof
大家的支持也是我個人堅持利用閒餘時間總結筆記的動力,謝謝大家!