行程監控類命令
本篇全是命令介紹,筆者把各個命令的都實驗一遍,給同學們看看.
一. PSTREE命令
pstree - display a tree of processes
選項:
-p 顯示行程的PID
-T 隱藏執行緒資訊
-u 顯示切換程序
-H PID 高亮顯示指定PID行程的父行程
示例:




二. PS命令
ps - report a snapshot of the current processes.
選項:
PS有三種風格的選項寫法:
BSD風格寫法 ps aux
UNIX風格寫法 ps -ef
GNU風格寫法 ps --pid PID
BSD風格選項:
a 顯示所有與終端有關的行程
x 顯示所有與終端無關的行程
u 顯示行程所有者相關的資訊
f 命令列把相關的行程顯示成行程樹
k 對屬性進行排序,屬性前加上-表示倒序
o 選擇顯示的欄位pid cmd psr ni(nice) pri rtprio tid class %cpu %mem user ruser euser等等
euser 表示顯示有效用戶欄位
ruser 表示顯示真是用戶欄位
psr 表示顯示CPU與行程的系結關系
pcpu CPU的利用率
ppid 父行程的PID
pri 系統優先級值
ni NICE優先級
rtprio 表示顯示實時優先級
L 顯示支持的欄位
UNIX風格選項:
-e 顯示所有行程
-f 顯示完整格式程式資訊
-F 顯示更完整格式程式資訊
-H 以行程層級格式顯示行程相關資訊
-u userlist 指定有效用戶ID
-U userliset 指定真正用戶ID
-g gid 指定有效的gid
-G gid 指定真的很的gid
-p PID 顯示指定pid的行程
-t TTY 顯示指定TTY終端的行程,相當于BSD風格的t選項
GNU風格選項:
--sort 等同于BSD風格的k選項,對指定屬性進行排序,-表示倒序顯示
--ppid 等同與UNIX風格的-p選項,指定顯示某PID的行程
欄位介紹:
USER 那個用戶執行的命令
PID 行程的PID
%CPU CPU占用的百分比
%MEM 記憶體占用百分比
VSZ 是申請的記憶體(占用的虛擬記憶體大小)
RSS 是實際使用記憶體(指的是常駐記憶體中的大小.不包括交換磁區中的)
TTY 哪個終端啟動的
STAT 狀態資訊
START 什么時間啟動的
TIME 使用時間片的累計值
COMMAND 命令
帶中括號的表示內核的執行緒
PPID 父行程的PID
C CPU的占用百分比
SIIME 啟動時間
PSR 運行在哪個CPU核心上
STAT行程狀態:
R 運行態
S (大寫S)可打斷的睡眠態 interruptable sleeping
D 不可打斷的睡眠態 uninterruptable sleeping
T 停止態stopped
Z zombie僵尸態
s (小寫s)會話的發起者,子行程的創建者
+ 前臺行程,運行在終端上的并且占據命令提示符的
I 空閑內核執行緒(大寫i)
l 多執行緒行程(小寫的L)
< 高優先級行程
N 低優先級行程
示例:







EXAMPLES
To see every process on the system using standard syntax:
ps -e
ps -ef
ps -eF
ps -ely
To see every process on the system using BSD syntax:
ps ax
ps axu
To print a process tree:
ps -ejH
ps axjf
To get info about threads:
ps -eLf
ps axms
To get security info:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
To see every process running as root (real & effective ID) in user format:
ps -U root -u root u
To see every process with a user-defined format:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan
三. PRTSTAT命令
prtstat PID 顯示指定PID行程的相信資訊
示例:

四. nice命令
nice命令只能調整非實時優先級
nice的調整優先級的范圍是-20~19,對應的系統優先級就是100~139
nice -n # COMMAND 以指定的優先級來啟動行程
選項-n 最好不要省略
普通用戶只能往后調整優先級,root即可以提高優先級,也可以降低優先級


五. renice命令
renice 同樣也只能調整非實時優先級,
renice只能調整正在運行的行程的優先級
renice的調整范圍還是-20~19,即使超出了也不會報錯,但是最大是19
renice -n # PID 重新調整指定PID行程的優先級
選項-n 可以省略


六. pgrep命令
pgrep [options] pattern
選項:
-u uid 根據UID查詢行程,UID是指生效用戶的UID
-U uid 根據UID查詢行程,UID是指真正行程發起者的UID
-t 終端 根據指定終端查找行程
-l 顯示出行程名
-a 顯示完整格式的行程名
-P PID 限制指定PID行程的子行程
示例:

七. pidof命令
根據行程名查找行程的PID
pidof [OPTION] COMMAND
選項:
-x 根據腳本名稱查找PID
示例:

八. uptime命令
負載查詢
系統啟動時長
空閑行程的總時長
當前時間
當前上線人數
系統平均負載
CPU的個數*3 這個數字超過5就很忙了

九. mpstat命令
詳細統計了CPU的使用情況,
mpstat # ## 可以每#秒重繪一下,一共統計##次

十. top命令
動態追蹤行程資訊
選項:
-d # 指定重繪間隔為#秒
-n # 指定重繪次數為#次
-b 以批次的方式顯示
互動式命令:
M 按照記憶體排序
P 按照CPU排序
T 按照時間片累計進行排序
l 顯示或隱藏top的第一行
t 顯示或隱藏top的第二行第三行
1 匯總顯示CPU還是分開顯示CPU核心
m 顯示或隱藏TOP的第四行第五行
q 退出
s 調整重繪間隔
k 終止行程
W 另存為檔案
top - 05:45:41 up 1 day, 8:54, 1 user, load average: 0.00, 0.00, 0.00
# 當前時間 運行時長 當前登錄用戶數 平均負載 過去1分鐘 5分鐘 15分鐘的平均佇列長度
Tasks: 181 total, 1 running, 180 sleeping, 0 stopped, 0 zombie
# 一共的行程數 正在運行數 睡眠行程數 停止行程數 僵死行程數
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
# 用戶空間 系統空間 NICE 空閑 等待IO 硬體中斷 軟體中斷 被虛擬程式偷走的
MiB Mem : 957.1 total, 147.3 free, 211.6 used, 598.1 buff/cache
# 總記憶體大小 空閑記憶體大小 已使用記憶體 用于緩沖和快取的記憶體空間
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 592.1 avail Mem
# 總交換空間 空閑交換空間 已使用交換空間 可用記憶體空間

十一. HTOP命令
增強版的top命令,需要額外安裝.而且最最重要的,竟然支持滑鼠操作.而且還支持搜索
-d # 指定重繪間隔
-u USERNAME 僅顯示指定用戶的進行
-s COLUME 以指定欄位進行排序
-h 人性化顯示
-m 以M為顯示單位
-g 以G為顯示單位
互動式選項:
H 顯示或隱藏執行緒
K 顯示或隱藏內核執行緒,默認是隱藏的
P 以占用CPU百分比排序
M 以占用記憶體百分比排序
T 以使用時間片累計時長排序
l 顯示指定行程打開的檔案串列
s 追蹤行程發起的系統呼叫
t 以樹狀結構顯示行程父子關系或者使用F5鍵
a 將選定的行程系結指定的CPU核心

看到有沒有眼前一亮的感覺.真的太好用了.推薦大家使用安裝,資源管理的三板斧不是白叫的.
十二. free命令
顯示交換磁區和記憶體空間的使用情況
選項:
-h 人性化顯示
-m 以M為單位顯示
-g 以G為單位顯示
-b 以位元組為單位顯示
-o 隱藏不顯示cache/buffer行,在centos6及以前版本有效
-s # 指定重繪間隔
-c # 指定重繪次數




十三.PMAP命令
pmap PID 查看指定行程的物理記憶體映射表

pmap命令實際上就是呼叫了/proc/PID/maps檔案的內容.只不過這個檔案不太好理解.使用pmap命令來簡化查看程序
十四.strace命令
stracem COMMAND 用來追蹤COMMAND命令執行程序中產生的系統呼叫

十五.ltrace命令
ltrace COMMAND 查看COMMAND命令在執行時呼叫了那些庫檔案

strace和ltarce建議好好學學,避免成為背鍋俠
十六.vmstat命令
查看虛擬記憶體的情況
選項:
vmstat # ## 間隔#秒重繪一次 一共顯示##次
-s 匯總

欄位介紹:
procs
r 等待運行的行程個數,也就是CPU等待運行的佇列長度
b 處于不可中斷睡眠的行程個數,被阻塞的任務佇列的長度.如果這個數字很大,可能等待IO數很大
memory
swpd 交換記憶體使用的總量,如果這個swpd的有使用,或者有增長趨勢就說明記憶體不夠用了.
free 空閑的記憶體總量
buffer 用于緩沖記憶體總量
cache 用于快取記憶體總量
swap
si: Amount of memory swapped in from disk (/s).從磁盤中交換進記憶體的記憶體量,參照物是記憶體
so: Amount of memory swapped to disk (/s).從記憶體中交換至磁盤的記憶體量,參照物是記憶體
io
bi: Blocks received from a block device (blocks/s).以記憶體為參照物,從磁盤寫入到記憶體
bo: Blocks sent to a block device (blocks/s).以記憶體為參照物,從記憶體輸出到磁盤
system
in 平均每秒鐘的中斷次數 interrupt
cs 行程切換速率 context switch
cpus
us 用戶空間中行程占用CPU的百分比
sy 內核占用CPU的百分比
id 空閑時段消耗的CPU百分比
wa 消耗在等待IO操作完成時消耗CPU的百分比
steal 虛擬程式(偷走的)消耗的cpu百分比
備注:vmstat命令也是通過查看/proc目錄下內核輸出的引數來統計各個行程的相關資料
十七.IOSTAT命令
iostat # ## 指定重繪間隔為#秒,指定重繪次數##次
選項:
-c 僅顯示CPU統計資訊
-d 僅顯示硬碟統計資訊
-x 顯示更加詳細的統計資訊,包括CPU和硬碟的
-k 以K為單位顯示
-m 以M為單位顯示
欄位介紹:
kB_read/s 讀的速率
kB_wrtn/s 寫的速率
kB_read 讀的總量
kB_wrtn 寫的總量



十八.DSTAT命令
dstata命令默認是每秒重繪一次的.帶顏色顯示.同時強大到沒有朋友的工具
dstat # ## 指定重繪時間為#秒,指定重繪次數為#次
選項:
-c 僅顯示CPU資訊
-C # 顯示在哪個CPU核心上的資訊
-d 僅顯示硬碟資訊
-n 僅顯示網路流量資訊
-g 僅顯示記憶體頁資訊
-y 顯示系統有關資訊,包括中斷和行程切換速率
-i 顯示軟硬中斷
-m 顯示記憶體相關
-p 顯示行程統計資訊
-r 顯示IO請求資訊
-s 顯示swap資訊
-t 輸出當前時間
-v 等同與vmstat輸出結果
--tcp 顯示tcp相關資料
--udp 顯示Udp相關資料
--raw 顯示raw相關資料
--top-cpu 顯示最占用cpu的行程
--top-io 顯示最占用Io的行程
--top-mem 顯示最占用記憶體的行程
--top-latency 顯示延遲最大的行程
示例:



十九.IOTOP命令
前線一些工具都是一些綜合型別的工具,什么都能監控,單有好像專一了又不太滿足需求,向iostat命令,只能查看到磁盤的讀寫很高,但是就是不知道哪個程式帶來的大IO.這個款專一好男人的工具iotop
iotop命令可以不停的重繪顯示當前那些行程頻繁讀寫.放張圖片看看
第一行是磁盤的讀寫的總速率
第二行是實際產生的讀寫速率
第三行引數如下:
TID 執行緒ID,這里默認的TID,可是使用互動命令p切換成PID的顯示
PRIO 優先級,
USER 行程發起者
DISK READ 磁盤讀速率
DISK WRITE 磁盤寫速率
SWAPIN 交換磁區寫入速率
IO IO等待的百分比

有一個很有意思的設定,第三行上有一個<或者>,這說明正在以這一行進行排序
大于號表示降序序排序
小于號表示升序排序
可以使用r鍵進行切換
互動式選項:
left和right方向鍵 可以改變排序列
r 方向排序
o 只實際上有IO請求的執行緒
p 在PID和TID之間進行切換,默認是TID顯示
i 改變執行緒或行程的優先級
q 退出
選項:
-o 只顯示正在產生IO請求的行程
-b 以批形式顯示,非互動式模式,主要用作與記錄在檔案
-t 加上時間戳,主要用作記錄日志
-n # 需要結合-b一起使用,顯示幾批次,同樣主要用來記錄日志,如果不指定# 表示無限次
-d # 指定重繪間隔,默認重繪是1秒
-p PID 指定監控的行程
-u USER 指定監控哪個用戶的行程
-P 以行程的方式顯示,默認是執行緒TID
-q 只在第一次檢測時顯示列名和IO匯總,主要用于記錄日志
-qq 永遠不顯示列名,但是還顯示IO匯總,主要用作記錄日志
-qqq 列名和IO匯總都不顯示,主要用作記錄日志
示例






二十.IFTOP命令
監控網路鏈接和流量
選項:
-n 以數字方式顯示

二十一.NLOAD命令
監控網路鏈接和流量
選項:
-t # 指定重繪間隔
-u {h|b|k|m|g|H|B|K|M|G} 指定顯示單位
h:auto b:Bit/s k:kBit/s m:mBit/s g:gBit/s
H:auto B:Byte/s K:kByte/s M:mByte/s G:gByte/s

二十二.LSOF命令
lsof:list open files 查看當前系統正在使用的檔案,在linux中一切皆檔案,所以通過lsof命令不僅可以查看正在使用的普通檔案,還可以訪問套接字等等,無比強大的工具.
查看當前系統檔案的工具,跟蹤某個行程正在使用哪個檔案
可以利用losf恢復已經洗掉的檔案,前提這個檔案正在訪問
選項:
-a 列出打開檔案的行程
-c COMMAND 列出指定行程打開的檔案,這里跟的是行程名
-g GID 列出GID用戶的行程詳情
-d 檔案號 列出占用該檔案號的行程
+d 目錄 列出目錄下被打開的檔案
+D 目錄 遞回列出目錄下被打開的檔案
-n 目錄 列出使用NFS的檔案
-i 條件 列出符合條件的行程
4 顯示IPV4的行程
6 顯示ipv6的行程
:80 顯示占用80埠的行程
@IPADDR 顯示和IPADDR鏈接的行程
-p PID 列出指定PID行程所打開的檔案
-u UID 列出UID用戶的行程鎖使用的檔案
-n 不反向決議
}




小技巧:
利用lsof找回誤洗掉且正在被打開的檔案.
第一步,現在終端持續打開一個檔案,模擬這個檔案正在被使用
第二步,在終端二上洗掉正在使用的檔案
第三步,使用lsof查找剛才洗掉的檔案是哪個程式使用的
第四步,進入/proc/PID/fd目錄中,其中PID就是剛才查找到使用誤洗掉檔案行程的PID
第五步,就會發現其中的3號檔案描述符就是指向剛才誤洗掉的檔案.利用重定向恢復
檔案已經找回來了,只有某個檔案正在被使用才能找回來,因為洗掉檔案后,系統不會立即釋放類洗掉的空間.
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/84862.html
標籤:Linux
下一篇:行程管理類命令
