liunx中各種監控工具,量大.本篇全是命令介紹,筆者把各個命令的都實驗一遍,給同學們看看. ...
進程監控類命令
本篇全是命令介紹,筆者把各個命令的都實驗一遍,給同學們看看.
一. 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號文件描述符就是指向剛纔誤刪除的文件.利用重定向恢復
文件已經找回來了,只有某個文件正在被使用才能找回來,因為刪除文件後,系統不會立即釋放類刪除的空間.