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狀态的程序資訊;