linux下開發 最實用指令之調試篇-----ps、top、grep

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
大家的支持也是我個人堅持利用閒餘時間總結筆記的動力,謝謝大家!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章