進(jìn)程監(jiān)控類命令
?
本篇全是命令介紹,筆者把各個(gè)命令的都實(shí)驗(yàn)一遍,給同學(xué)們看看.
?
一.?PSTREE命令
pstree - display a tree of processes
選項(xiàng):
-p 顯示進(jìn)程的PID
-T 隱藏線程信息
-u 顯示切換過程
-H PID 高亮顯示指定PID進(jìn)程的父進(jìn)程
示例:
?
?
?
?
?
?
?
?
?
?
?
?
?
?
二.?PS命令
ps - report a snapshot of the current processes.
選項(xiàng):
PS有三種風(fēng)格的選項(xiàng)寫法:
BSD風(fēng)格寫法 ps aux
UNIX風(fēng)格寫法 ps -ef
GNU風(fēng)格寫法 ps --pid PID
?
BSD風(fēng)格選項(xiàng):
a 顯示所有與終端有關(guān)的進(jìn)程
x 顯示所有與終端無關(guān)的進(jìn)程
u 顯示進(jìn)程所有者相關(guān)的信息
f 命令列把相關(guān)的進(jìn)程顯示成進(jìn)程樹
k 對(duì)屬性進(jìn)行排序,屬性前加上-表示倒序
o 選擇顯示的字段pid cmd psr ni(nice) pri rtprio tid class %cpu %mem user ruser euser等等
euser 表示顯示有效用戶字段
ruser 表示顯示真是用戶字段
psr 表示顯示CPU與進(jìn)程的綁定關(guān)系
pcpu CPU的利用率
ppid 父進(jìn)程的PID
pri 系統(tǒng)優(yōu)先級(jí)值
ni NICE優(yōu)先級(jí)
rtprio 表示顯示實(shí)時(shí)優(yōu)先級(jí)
L 顯示支持的字段
UNIX風(fēng)格選項(xiàng):
-e 顯示所有進(jìn)程
-f 顯示完整格式程序信息
-F 顯示更完整格式程序信息
-H 以進(jìn)程層級(jí)格式顯示進(jìn)程相關(guān)信息
-u userlist 指定有效用戶ID
-U userliset 指定真正用戶ID
-g gid 指定有效的gid
-G gid 指定真的很的gid
-p PID 顯示指定pid的進(jìn)程
-t TTY 顯示指定TTY終端的進(jìn)程,相當(dāng)于BSD風(fēng)格的t選項(xiàng)
GNU風(fēng)格選項(xiàng):
--sort 等同于BSD風(fēng)格的k選項(xiàng),對(duì)指定屬性進(jìn)行排序,-表示倒序顯示
--ppid 等同與UNIX風(fēng)格的-p選項(xiàng),指定顯示某PID的進(jìn)程
?
字段介紹:
USER 那個(gè)用戶執(zhí)行的命令
PID 進(jìn)程的PID
%CPU CPU占用的百分比
%MEM 內(nèi)存占用百分比
VSZ 是申請(qǐng)的內(nèi)存(占用的虛擬內(nèi)存大小)
RSS 是實(shí)際使用內(nèi)存(指的是常駐內(nèi)存中的大小.不包括交換分區(qū)中的)
TTY 哪個(gè)終端啟動(dòng)的
STAT 狀態(tài)信息
START 什么時(shí)間啟動(dòng)的
TIME 使用時(shí)間片的累計(jì)值
COMMAND 命令
帶中括號(hào)的表示內(nèi)核的線程
PPID 父進(jìn)程的PID
C CPU的占用百分比
SIIME 啟動(dòng)時(shí)間
PSR 運(yùn)行在哪個(gè)CPU核心上
?
?
STAT進(jìn)程狀態(tài):
R 運(yùn)行態(tài)
S (大寫S)可打斷的睡眠態(tài) interruptable sleeping
D 不可打斷的睡眠態(tài) uninterruptable sleeping
T 停止態(tài)stopped
Z zombie僵尸態(tài)
?
s (小寫s)會(huì)話的發(fā)起者,子進(jìn)程的創(chuàng)建者
前臺(tái)進(jìn)程,運(yùn)行在終端上的并且占據(jù)命令提示符的
I 空閑內(nèi)核線程(大寫i)
l 多線程進(jìn)程(小寫的L)
< 高優(yōu)先級(jí)進(jìn)程
N 低優(yōu)先級(jí)進(jì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進(jìn)程的相信信息
?
示例:
?
?
?
?
四.?nice命令
nice命令只能調(diào)整非實(shí)時(shí)優(yōu)先級(jí)
nice的調(diào)整優(yōu)先級(jí)的范圍是-20~19,對(duì)應(yīng)的系統(tǒng)優(yōu)先級(jí)就是100~139
?
nice ?-n ?# ?COMMAND 以指定的優(yōu)先級(jí)來啟動(dòng)進(jìn)程
選項(xiàng)-n 最好不要省略
普通用戶只能往后調(diào)整優(yōu)先級(jí),root即可以提高優(yōu)先級(jí),也可以降低優(yōu)先級(jí)
?
?
?
?
?
?
?
五.?renice命令
renice 同樣也只能調(diào)整非實(shí)時(shí)優(yōu)先級(jí),
renice只能調(diào)整正在運(yùn)行的進(jìn)程的優(yōu)先級(jí)
renice的調(diào)整范圍還是-20~19,即使超出了也不會(huì)報(bào)錯(cuò),但是最大是19
?
renice -n # PID 重新調(diào)整指定PID進(jìn)程的優(yōu)先級(jí)
選項(xiàng)-n ?可以省略
?
?
?
?
?
?
?
?
六.?pgrep命令
?
pgrep [options] pattern
?
選項(xiàng):
-u uid 根據(jù)UID查詢進(jìn)程,UID是指生效用戶的UID
-U uid 根據(jù)UID查詢進(jìn)程,UID是指真正進(jìn)程發(fā)起者的UID
-t 終端 根據(jù)指定終端查找進(jìn)程
-l 顯示出進(jìn)程名
-a 顯示完整格式的進(jìn)程名
-P PID 限制指定PID進(jìn)程的子進(jìn)程
?
示例:
?
?
?
?
?
?
七.?pidof命令
根據(jù)進(jìn)程名查找進(jìn)程的PID
?
pidof ??[OPTION] ??COMMAND
選項(xiàng):
-x 根據(jù)腳本名稱查找PID
?
示例:
?
?
?
?
八.?uptime命令
負(fù)載查詢
系統(tǒng)啟動(dòng)時(shí)長(zhǎng)
空閑進(jìn)程的總時(shí)長(zhǎng)
當(dāng)前時(shí)間
當(dāng)前上線人數(shù)
系統(tǒng)平均負(fù)載
CPU的個(gè)數(shù)*3 ??這個(gè)數(shù)字超過5就很忙了
?
?
?
?
?
?
九.?mpstat命令
詳細(xì)統(tǒng)計(jì)了CPU的使用情況,
mpstat # ## ? 可以每#秒刷新一下,一共統(tǒng)計(jì)##次
?
?
?
?
?
十.?top命令
動(dòng)態(tài)追蹤進(jìn)程信息
選項(xiàng):
-d # 指定刷新間隔為#秒
-n # 指定刷新次數(shù)為#次
-b 以批次的方式顯示
交互式命令:
M 按照內(nèi)存排序
P 按照CPU排序
T 按照時(shí)間片累計(jì)進(jìn)行排序
l 顯示或隱藏top的第一行
t 顯示或隱藏top的第二行第三行
1? 匯總顯示CPU還是分開顯示CPU核心
m 顯示或隱藏TOP的第四行第五行
q 退出
s 調(diào)整刷新間隔
k 終止進(jìn)程
W 另存為文件
?
top - 05:45:41 up 1 day, ?8:54, ?1 user, ?load average: 0.00, 0.00, 0.00
# 當(dāng)前時(shí)間 ???????運(yùn)行時(shí)長(zhǎng) ?當(dāng)前登錄用戶數(shù) ???平均負(fù)載 ?過去1分鐘 5分鐘 15分鐘的平均隊(duì)列長(zhǎng)度
?
Tasks: 181 total, ??1 running, 180 sleeping, ??0 stopped, ??0 zombie
# ???一共的進(jìn)程數(shù) ??正在運(yùn)行數(shù) ?睡眠進(jìn)程數(shù) ???停止進(jìn)程數(shù) ???僵死進(jìn)程數(shù)
?
%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
# 用戶空間 ??系統(tǒng)空間 ?NICE ???空閑 ????等待IO ?硬件中斷 ?軟件中斷 ?被虛擬程序偷走的
?
MiB Mem : ???957.1 total, ???147.3 free, ???211.6 used, ???598.1 buff/cache
# 總內(nèi)存大小 空閑內(nèi)存大小 ?已使用內(nèi)存 ??用于緩沖和緩存的內(nèi)存空間
?
MiB Swap: ??2048.0 total, ??2048.0 free, ?????0.0 used. ???592.1 avail Mem
# ????總交換空間 空閑交換空間 ???已使用交換空間 ??可用內(nèi)存空間
?
?
?
?
?
?
十一.?HTOP命令
增強(qiáng)版的top命令,需要額外安裝.而且最最重要的,竟然支持鼠標(biāo)操作.而且還支持搜索
-d # 指定刷新間隔
-u USERNAME 僅顯示指定用戶的進(jìn)行
-s COLUME 以指定字段進(jìn)行排序
?
-h ? 人性化顯示
-m 以M為顯示單位
-g 以G為顯示單位
?
交互式選項(xiàng):
H 顯示或隱藏線程
K 顯示或隱藏內(nèi)核線程,默認(rèn)是隱藏的
P 以占用CPU百分比排序
M 以占用內(nèi)存百分比排序
T 以使用時(shí)間片累計(jì)時(shí)長(zhǎng)排序
l 顯示指定進(jìn)程打開的文件列表
s 追蹤進(jìn)程發(fā)起的系統(tǒng)調(diào)用
t 以樹狀結(jié)構(gòu)顯示進(jìn)程父子關(guān)系或者使用F5鍵
a 將選定的進(jìn)程綁定指定的CPU核心
?
?
?
?
?
看到有沒有眼前一亮的感覺.真的太好用了.推薦大家使用安裝,資源管理的三板斧不是白叫的.
?
十二.?free命令
顯示交換分區(qū)和內(nèi)存空間的使用情況
選項(xiàng):
-h 人性化顯示
-m 以M為單位顯示
-g 以G為單位顯示
-b 以字節(jié)為單位顯示
-o 隱藏不顯示cache/buffer行,在centos6及以前版本有效
-s # 指定刷新間隔
-c ?# 指定刷新次數(shù)
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
十三.PMAP命令
pmap PID 查看指定進(jìn)程的物理內(nèi)存映射表
?
?
?
?
?
?
pmap命令實(shí)際上就是調(diào)用了/proc/PID/maps文件的內(nèi)容.只不過這個(gè)文件不太好理解.使用pmap命令來簡(jiǎn)化查看過程
?
?
十四.strace命令
stracem COMMAND 用來追蹤C(jī)OMMAND命令執(zhí)行過程中產(chǎn)生的系統(tǒng)調(diào)用
?
?
?
?
?
?
十五.ltrace命令
ltrace COMMAND 查看COMMAND命令在執(zhí)行時(shí)調(diào)用了那些庫文件
?
?
?
?
?
?
strace和ltarce建議好好學(xué)學(xué),避免成為背鍋俠
?
十六.vmstat命令
查看虛擬內(nèi)存的情況
?
選項(xiàng):
vmstat # ## ?間隔#秒刷新一次 ??一共顯示##次
-s 匯總
?
?
?
?
?
字段介紹:
procs
r 等待運(yùn)行的進(jìn)程個(gè)數(shù),也就是CPU等待運(yùn)行的隊(duì)列長(zhǎng)度
b 處于不可中斷睡眠的進(jìn)程個(gè)數(shù),被阻塞的任務(wù)隊(duì)列的長(zhǎng)度.如果這個(gè)數(shù)字很大,可能等待IO數(shù)很大
?
memory
swpd 交換內(nèi)存使用的總量,如果這個(gè)swpd的有使用,或者有增長(zhǎng)趨勢(shì)就說明內(nèi)存不夠用了.
free 空閑的內(nèi)存總量
buffer 用于緩沖內(nèi)存總量
cache 用于緩存內(nèi)存總量
?
swap
???si: Amount of memory swapped in from disk (/s).從磁盤中交換進(jìn)內(nèi)存的內(nèi)存量,參照物是內(nèi)存
???so: Amount of memory swapped to disk (/s).從內(nèi)存中交換至磁盤的內(nèi)存量,參照物是內(nèi)存
?
?
io
bi: Blocks received from a block device (blocks/s).以內(nèi)存為參照物,從磁盤寫入到內(nèi)存
bo: Blocks sent to a block device (blocks/s).以內(nèi)存為參照物,從內(nèi)存輸出到磁盤
?
system
in 平均每秒鐘的中斷次數(shù) interrupt
cs 進(jìn)程切換速率 context switch
?
cpus
us 用戶空間中進(jìn)程占用CPU的百分比
sy 內(nèi)核占用CPU的百分比
id 空閑時(shí)段消耗的CPU百分比
wa 消耗在等待IO操作完成時(shí)消耗CPU的百分比
steal 虛擬程序(偷走的)消耗的cpu百分比
?
?備注:vmstat命令也是通過查看/proc目錄下內(nèi)核輸出的參數(shù)來統(tǒng)計(jì)各個(gè)進(jìn)程的相關(guān)數(shù)據(jù)
?
?
十七.IOSTAT命令
iostat # ?## 指定刷新間隔為#秒,指定刷新次數(shù)##次
選項(xiàng):
-c 僅顯示CPU統(tǒng)計(jì)信息
-d 僅顯示硬盤統(tǒng)計(jì)信息
-x 顯示更加詳細(xì)的統(tǒng)計(jì)信息,包括CPU和硬盤的
-k 以K為單位顯示
-m 以M為單位顯示
字段介紹:
kB_read/s 讀的速率
kB_wrtn/s 寫的速率
kB_read 讀的總量
kB_wrtn 寫的總量
?
?
?
?
?
?
?
?
?
?
?
?
十八.DSTAT命令
dstata命令默認(rèn)是每秒刷新一次的.帶顏色顯示.同時(shí)強(qiáng)大到?jīng)]有朋友的工具
dstat # ## 指定刷新時(shí)間為#秒,指定刷新次數(shù)為#次
選項(xiàng):
-c 僅顯示CPU信息
-C # 顯示在哪個(gè)CPU核心上的信息
-d 僅顯示硬盤信息
-n 僅顯示網(wǎng)絡(luò)流量信息
-g 僅顯示內(nèi)存頁信息
-y 顯示系統(tǒng)有關(guān)信息,包括中斷和進(jìn)程切換速率
-i 顯示軟硬中斷
-m 顯示內(nèi)存相關(guān)
-p 顯示進(jìn)程統(tǒng)計(jì)信息
-r 顯示IO請(qǐng)求信息
-s 顯示swap信息
-t 輸出當(dāng)前時(shí)間
-v 等同與vmstat輸出結(jié)果
--tcp 顯示tcp相關(guān)數(shù)據(jù)
--udp 顯示Udp相關(guān)數(shù)據(jù)
--raw 顯示raw相關(guān)數(shù)據(jù)
--top-cpu 顯示最占用cpu的進(jìn)程
--top-io 顯示最占用Io的進(jìn)程
--top-mem 顯示最占用內(nèi)存的進(jìn)程
--top-latency 顯示延遲最大的進(jìn)程
示例:
?
?
?
?
?
?
?
?
?
?
十九.IOTOP命令
前線一些工具都是一些綜合類型的工具,什么都能監(jiān)控,單有好像專一了又不太滿足需求,向iostat命令,只能查看到磁盤的讀寫很高,但是就是不知道哪個(gè)程序帶來的大IO.這個(gè)款專一好男人的工具iotop
iotop命令可以不停的刷新顯示當(dāng)前那些進(jìn)程頻繁讀寫.放張圖片看看
第一行是磁盤的讀寫的總速率
第二行是實(shí)際產(chǎn)生的讀寫速率
第三行參數(shù)如下:
TID 線程ID,這里默認(rèn)的TID,可是使用交互命令p切換成PID的顯示
PRIO 優(yōu)先級(jí),
USER 進(jìn)程發(fā)起者
DISK READ 磁盤讀速率
DISK WRITE 磁盤寫速率
SWAPIN 交換分區(qū)寫入速率
IO IO等待的百分比
?
?
?
?
有一個(gè)很有意思的設(shè)定,第三行上有一個(gè)<或者>,這說明正在以這一行進(jìn)行排序
大于號(hào)表示降序序排序
小于號(hào)表示升序排序
可以使用r鍵進(jìn)行切換
?
交互式選項(xiàng):
left和right方向鍵 可以改變排序列
r 方向排序
o 只實(shí)際上有IO請(qǐng)求的線程
p 在PID和TID之間進(jìn)行切換,默認(rèn)是TID顯示
i 改變線程或進(jìn)程的優(yōu)先級(jí)
q 退出
?
選項(xiàng):
-o 只顯示正在產(chǎn)生IO請(qǐng)求的進(jìn)程
-b 以批形式顯示,非交互式模式,主要用作與記錄在文件
-t 加上時(shí)間戳,主要用作記錄日志
-n # 需要結(jié)合-b一起使用,顯示幾批次,同樣主要用來記錄日志,如果不指定# 表示無限次
-d # 指定刷新間隔,默認(rèn)刷新是1秒
-p PID 指定監(jiān)控的進(jìn)程
-u USER 指定監(jiān)控哪個(gè)用戶的進(jìn)程
-P 以進(jìn)程的方式顯示,默認(rèn)是線程TID
-q 只在第一次檢測(cè)時(shí)顯示列名和IO匯總,主要用于記錄日志
-qq 永遠(yuǎn)不顯示列名,但是還顯示IO匯總,主要用作記錄日志
-qqq 列名和IO匯總都不顯示,主要用作記錄日志
?
示例
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
二十.IFTOP命令
監(jiān)控網(wǎng)絡(luò)鏈接和流量
選項(xiàng):
-n 以數(shù)字方式顯示
?
?
?
?
?
二十一.NLOAD命令
監(jiān)控網(wǎng)絡(luò)鏈接和流量
選項(xiàng):
-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?? ?查看當(dāng)前系統(tǒng)正在使用的文件,在linux中一切皆文件,所以通過lsof命令不僅可以查看正在使用的普通文件,還可以訪問套接字等等,無比強(qiáng)大的工具.
?? ?
?? ?查看當(dāng)前系統(tǒng)文件的工具,跟蹤某個(gè)進(jìn)程正在使用哪個(gè)文件
?? ?可以利用losf恢復(fù)已經(jīng)刪除的文件,前提這個(gè)文件正在訪問
?? ?選項(xiàng):
?? ??? ?-a?? ??? ??? ??? ?列出打開文件的進(jìn)程
?? ??? ?-c?? ?COMMAND?? ??? ?列出指定進(jìn)程打開的文件,這里跟的是進(jìn)程名
?? ??? ?-g?? ?GID?? ??? ??? ?列出GID用戶的進(jìn)程詳情
?? ??? ?-d ?? ?文件號(hào)?? ??? ?列出占用該文件號(hào)的進(jìn)程
?? ??? ? d?? ?目錄?? ??? ?列出目錄下被打開的文件
?? ??? ? D?? ?目錄?? ??? ?遞歸列出目錄下被打開的文件
?? ??? ?-n?? ?目錄?? ??? ?列出使用NFS的文件
?? ??? ?-i?? ?條件?? ??? ?列出符合條件的進(jìn)程
?? ??? ??? ??? ??? ??? ??? ?4?? ?顯示IPV4的進(jìn)程
?? ??? ??? ??? ??? ??? ??? ?6?? ?顯示ipv6的進(jìn)程
?? ??? ??? ??? ??? ??? ??? ?:80?? ?顯示占用80端口的進(jìn)程
?? ??? ??? ??? ??? ??? ??? ?@IPADDR?? ?顯示和IPADDR鏈接的進(jìn)程
?? ??? ?-p? PID?? ??? ??? ?列出指定PID進(jìn)程所打開的文件
?? ??? ?-u?? ?UID?? ??? ??? ?列出UID用戶的進(jìn)程鎖使用的文件
?? ??? ?-n?? ??? ??? ??? ?不反向解析
}
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
小技巧:
利用lsof找回誤刪除且正在被打開的文件.
第一步,現(xiàn)在終端持續(xù)打開一個(gè)文件,模擬這個(gè)文件正在被使用
?
第二步,在終端二上刪除正在使用的文件
?
第三步,使用lsof查找剛才刪除的文件是哪個(gè)程序使用的
?
第四步,進(jìn)入/proc/PID/fd目錄中,其中PID就是剛才查找到使用誤刪除文件進(jìn)程的PID
?
第五步,就會(huì)發(fā)現(xiàn)其中的3號(hào)文件描述符就是指向剛才誤刪除的文件.利用重定向恢復(fù)
?
?
文件已經(jīng)找回來了,只有某個(gè)文件正在被使用才能找回來,因?yàn)閯h除文件后,系統(tǒng)不會(huì)立即釋放類刪除的空間.
來源:https://www.icode9.com/content-3-692001.html聯(lián)系客服