天天看點

ps,top,htop,dstat指令的使用

ps指令:

report a snapshot of the current processes

/proc/:核心中的狀态資訊;

核心參數:可設定其值進而調整核心運作特性的參數;/proc/sys/

狀态變量:用于輸出核心中統計資訊或狀态資訊,僅用于檢視;

 參數:被模拟成檔案系統類型;

程序:

/proc/#

#:代表數字,為程序的PID;

例如:

]# ls /proc/1/:表示系統的父程序,裡面的檔案都代表核心參數;

核心參數就是儲存目前系統狀态的;

]# cat /proc/1/cmdline:顯示啟動1号程序的指令行程式是什麼;

]# cat /proc/1/maps:為記憶體映射,顯示1号程序啟動後用到的實體記憶體空間,且裡面存了什麼資料;

ps [options]

選項有三種風格:

       1   UNIX options, which may begrouped and must be preceded by a dash.

       2   BSD options, which may begrouped and must not be used with a dash.

       3   GNU long options, which arepreceded by two dashes.

Unix風格:必須使用-

BSD風格:不能使用-

GNU風格:使用--

啟動程序的方式:

系統啟動過程中自啟動:與終端無關的程序;

使用者通過終端啟動:與終端相關的程序;

選項:

a:所有與終端相關的程序;

x:所有與終端無關的程序;

u:以使用者為中心組織程序狀态資訊顯示;

常用組合之一:psaux

]# ps a:顯示所有與終端相關的程序;

]# ps x:顯示所有與終端無關的程序;

]#  ps aux

顯示字段表示含義:

USER:啟動程序的使用者;

PID:程序号;預設以PID排序;

%CPU:累計占用cpu的比率;

%MEM:記憶體空間占用比率;

VSZ:占用虛拟記憶體集的大小;

虛拟記憶體空間中資料的空間叫頁面page,每個頁面都映射到實體記憶體中的可用頁框pageframe,且是不連續的;作業系統中可有共享庫,多個程序可使用共享庫,在記憶體中隻存一份即可;

比如程序1虛拟記憶體空間中有5個頁面,其中2個是使用的共享庫的資料;

程序2虛拟記憶體空間中有4個頁面,其中2個是使用共享庫的資料;

那麼,事實上,它們真正占用的空間是不包括共享庫的,程序1占用為3個記憶體頁框,程序2占用為2個記憶體頁框;

RSS:ResidentSize常駐記憶體集;

記憶體空間分兩類:實體記憶體和交換記憶體,當實體記憶體不夠用是,可把一些資料放在交換記憶體上,但有些資料是不能放在交換記憶體中的就叫常駐記憶體集;

TTY:?表示不知道終端是什麼;如果知道就顯示終端名稱;

STAT:目前程序的狀态;(BSD風格)

R:running,運作态;

S:interruptablesleeping,可中斷睡眠;

D:uninterruptablesleeping,不可中斷睡眠;

T:Stopped,停止态;

Z:zombie,僵死态;

+:前台程序,運作在終端上,占用指令行;

l:多線程程序;

N:低優先級程序;

<:高優先級程序;

s:sessionleader,會話程序首程序;

START:啟動時間;

TIME:cpu累計運作時間;

COMMAND:有中括号的表示核心線程;

-e:顯示所有程序;

-f:顯示完整資訊;

]# ps -e:可顯示字段為PID、TTY、TIME、CMD;

]# ps -ef:可顯示字段為UID、PID、PPID、C、STIME、TTY、TIME、CMD;

PPID為父程序的程序号;

C:cpu占用百分比,cpuutilization;

STIME:啟動時間;

TTY:與終端相關;

TIME:累計運作時間;

CMD:啟動程序的指令;

常用組合之二:ps-ef

-F:顯示完成格式的程序資訊;

]# ps -eF:可顯示字段有:UID、PID、PPID、C、SZ、RSS、PSR、ST、STIME、TTY、TIME、CMD

PSR:程序運作在哪顆cpu上;

-H:以層級結構顯示程序的相關資訊(顯示程序及子程序);

]# ps -eFH:檢視所有程序,完成格式,以層級結構顯示;

常用組合之三:ps-eFH

-o field1,field2,...:自定義要顯示的字段清單,以逗号分隔;

常用的field:pid,ni,pri,psr,pcpu,stat,comm,tty,ppid,rtprio

ni:ncie值;-20到19

priority:priority,優先級;

rtprio:實時優先級;

psr:程序運作在哪顆cpu上;

pcpu:cpu的使用率;

ppid:父程序的程序号;

常用組合之四:o一定要寫在後面,因為後面要帶參數;

ps -eo

ps axo

]# ps axo pid,comm:檢視pid,comm兩字段,所有與終端相關,與終端無關的程序;

top指令:

display Linux processes

有點類似于windows中的任務管理器;以動态方式不斷重新整理的檢視目前系統上狀态資訊;

顯示字段說明:

top - 20:01:57 up  1:17,  1 user,  load average:0.00, 0.01, 0.05

Tasks: 356 total,   1 running, 355 sleeping,   0stopped,   0 zombie

%Cpu(s):  0.2 us,  0.3 sy,  0.0 ni, 99.5 id, 0.0 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem :  1003184 total,   724204 free,   127660used,   151320 buff/cache

KiB Swap:  2097148 total,  2097148 free,       0 used.   721960 avail Mem 

   PID USER      PR  NI   VIRT    RES    SHR S  %CPU %MEM    TIME+ COMMAND

20:01:57:為目前系統時間;

up:為運作時長;

user:登入目前系統的使用者數量;

load average: 0.00, 0.01, 0.05

平均負載:過去1分鐘,5分鐘,15分鐘的平均隊列長度,(是在cpu上等待運作程序的隊列長度,等待越長負載越大,通常隊列長度總數量不能大于cpu數量);

Tasks:程序總數、運作态、睡眠态、停止态、僵死态程序的數量;

%Cpu(s):cpu占用百分比;

us:使用者空間程序占用cpu百分比;

sy:核心空間占用cpu百分比;

ni:nice值調整後額外占用cpu的時間百分比;

id:空閑百分比;

wa:等待IO完成占用cpu的百分比;

hi:處理硬體中斷占用cpu的百分比;

si:處理軟中斷占用cpu的百分比;

st:被虛拟化偷走的cpu的百分比;

KiB Mem、KiBSwap:以KiB為機關顯示實體記憶體和交換分區的空間占用情況;

total:總空間;

free:空閑空間;

used:已用空間;

buff/cache:用于緩沖和緩存的空間(可回收,不算真占用,是以真正可用空間為free+buff/cache);

avail Men:可用記憶體空間;

顯示程序狀态字段說明:

PID:

USER:使用者;

PR:優先級;

NI:nice值;

VIRT:虛拟記憶體集;

RES:常駐記憶體集;

SHR:共享記憶體空間;

S:目前狀态;

%CPU:cpu占用累計時間百分比;

%MEN:記憶體占用百分比;

TIME+:運作時長;

COMMAND:啟動指令;

顯示時是預設以cpu百分比排序的,有很多互動式指令:

P:以占據cpu占用百分比排序;(預設)

M:以占據記憶體百分比排序;

T:以累計占用cpu時間排序;

首部資訊:

uptime資訊:l指令,開啟或關閉;

tasks及cpu資訊:t指令,開啟或關閉;

記憶體資訊:m指令,開啟或關閉;

退出使用:q

修改重新整理時間間隔:s設定;

指定PID,終止指定的程序:k PID

-d #:啟動top指令,指定重新整理時間間隔,預設3秒;

-b:以批次方式顯示所有程序狀态資訊;

-n #:顯示多少批次;

1:可以分散顯示cpu各個核心資訊;

]# top -b -n1:僅顯示一批次所有程序狀态資訊,就退出;

htop指令:

互動式程序檢視器

各顯示字段同top;

-d #:指定延遲時間間隔;

-u USERNAME:僅顯示指定使用者的程序;

-s COLUME:以指定字段進行排序;

子指令:

與top相同;

l:顯示標明程序打開的檔案清單,能跟蹤一個程序所打開的檔案;

s:跟蹤標明的程序所發起的系統調用;

t或F5:以層級關系顯示各程序狀态,樹狀結構顯示程序父子關系;

a:将標明的程序綁定在指定的CPU核心,設定程序在哪顆CPU上運作(affinity);

F2:設定顯示格式、顯示方式等;

u:顯示用所有戶程序;

H:隐藏/顯示使用者線程threads;

K:隐藏/顯示核心線程;

F:使用光标選擇程序;

P M T:根據CPU%,MEM%,TIME排序;

c:标記程序和子程序;

Esc:傳回主界面;

dstat指令:

versatile tool for generating system resource statistics

dstat [-afv] [options..] [delay [count]]

預設顯示:cdngy

-c:顯示cpu狀态相關資訊;

-C #,#,..,total:表示檢視指定cpu核心的資訊;

-d:磁盤IO狀态資訊;

-D sda,dsb,...,total

-n:Internet的相關統計資料,網絡狀态資訊;

-g:顯示page相關的速率資料,記憶體頁資訊;

-y:系統狀态資訊;

-i:顯示中斷狀态資訊;

-l:顯示平均負載狀态資訊;

-m:Memory的相關統計資料,顯示記憶體狀态資訊;

-N eth1,total:指定網卡資訊;

-p:顯示process的相關統計資料,(包括運作隊列,不可中斷睡眠,建立程序速率);

-r:顯示IO請求的相關統計資料,(包括讀,寫);

-s:顯示swap的相關統計資料,(包括已用,空閑);

-S swap1,total:指定swap資訊;

-t:顯示目前時間;

--aio:顯示異步IO狀态資訊;

--ipc:顯示程序間通信狀态資訊(包括消息隊列,semaphores,共享記憶體);

--lock:顯示檔案鎖;(posix,flock,read,write)

--raw:顯示裸套接字狀态資訊;

--tcp:顯示tcp狀态的程序資訊;

--udp:顯示udp狀态的程序資訊;

--top-bio:顯示最消耗磁盤IO的程序;

--top-cpu:顯示最消耗cpu的程序;

--top-int:顯示最多中斷數量的程序;

--top-mem:顯示最消耗記憶體的程序;

--top-lantency:延遲最大的程序;

]# dstat 2 5:每2秒鐘重新整理一次,隻顯示5次;

]# dstat --tcp:檢視tcp狀态的程序資訊;

繼續閱讀