Linux程序檢視及管理的工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup
一. pstree指令:
pstree - display a tree of processes
二. ps: process state, report a snapshot of the current processes
Linux系統各程序的相關資訊均儲存在/proc/PID目錄下的各檔案中,每一個PID都是一個程序号,PID中的cmdline檔案說明了這個程序是由哪個檔案啟動的;
ps [OPTION]... 選項:支援兩種風格
1) BSD風格,前面沒- ,
常用組合:aux
u: 以使用者為中心組織程序狀态資訊顯示
a: 與終端相關的程序;
x: 與終端無關的程序;
~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
VSZ: Virtual memory SiZe,能使用的虛拟記憶體大小
RSS: ReSident Size, 常駐記憶體大小,不能放在交換分區中的
STAT:程序狀态
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zombie
+: 前台程序
l: 多線程程序
N:低優先級程序
<: 高優先級程序
s: session leader,會話建立者,這個啟動後,會引起很多其他程序,如果它被終止,與它相關的程序也會終止
COMMAND: 由什麼指令啟動的程序
2) 标準風格:
常用組合1:-ef (PPID是父程序号)
-e: 顯示所有程序
-f: 顯示完整格式程式資訊
-U: 顯示指定使用者程序 ps -U root
-o: 自定義顯示輸出
常用組合2:-eFH
-F: 顯示完整格式的程序資訊
-H: 以程序層級格式顯示程序相關資訊
常用組合3:-eo, axo,指明要顯示的字段
例如: ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ni: nice值
pri: priority,優先級
psr: processor, CPU
rtprio: 實時優先級
三. pgrep, pkill:
pgrep [options] pattern------程序顯示過濾,用法和pkill一樣,比如pgrep -u root -l
pkill [options] pattern
-u uid: effective user,真實有效的使用者
-U uid: real user,看到的使用者
-t terminal: 與指定終端相關的程序
-l: 顯示程序名
-a: 顯示完整格式的程序名
-P pid: 顯示其父程序為此處指定的程序的程序清單
四. pidof:
根據程序名擷取其PID;
五. top:
1)有許多内置指令(就是進入top顯示界面後直接按指令鍵):
排序:預設以CPU排序
P:以占據的CPU百分比;
M:占據記憶體百分比;
T:累積占據CPU時長;
首部資訊顯示:
uptime資訊:l指令
tasks及cpu資訊:t指令, cpu分别顯示:1 (數字)
memory資訊:m指令,其中us:使用者空間,sy:核心空間,ni:nice值,id:空閑時間,wa:等待I/O時間,hi:硬體中斷時間,si:軟體中斷時間,st:被虛拟技術偷走的時間
退出指令:q
修改重新整理時間間隔:s
終止指定程序:k
2)參數選項:
-d #: 指定重新整理時間間隔,預設為3秒;
-b: 以批次方式;自動翻頁
-n #: 顯示多少批次;比如 top -b -n 1--隻顯示第一屏
六. htop指令:
選項:
-d #: 指定重新整理時間間隔;
-u UserName: 僅顯示指定使用者的程序;
-s COLOMN: 以指定字段進行排序;
内建指令:
s: 跟蹤標明程序的系統調用;(上下鍵選程序)
l: 顯示標明程序打開的檔案清單;
a:将標明的程序綁定至某指定CPU,比如有多個CPU時,要把程序運作在哪個CPU上
t: 顯示程序樹
注意:Fedora-EPEL源中提供此軟體,比如在鏡像源中指定base=mirrors.aliyun.com/epel/7/x86_64/
七 vmstat指令:虛拟記憶體狀态工具---經典
vmstat [options] [delay [count]] ,比如 vmstat 2,表示2秒重新整理一次,vmstat 2 5,顯示5次退出
1)procs相關:
r:等待運作的程序的個數,單個CPU時,超過3個就說明CPU性能不夠了;
b:處于不可中斷睡眠态的程序個數;(被阻塞的隊列的長度);
2) memory:
swpd: 交換記憶體的使用總量;
free:空閑實體記憶體總量;
buffer:用于buffer的記憶體總量;
cache:用于cache的記憶體總量;
3)swap:
si:資料進入swap中的資料速率(kb/s)
so:資料離開swap中的資料速率(kb/s),重新載入記憶體
4)io:
bi:從塊裝置(磁盤)讀入資料到系統(記憶體)的速率;(kb/s)
bo: 儲存資料至塊裝置的速率;
5)system:
in: interrupts, 中斷速率;
cs: context switch, 程序切換速率;
6)cpu:
us--使用者空間占據CPU的比例
sy--核心空間
id--空閑比例
wa--等待I/0完成所消耗的時間比例
st--被虛拟化技術偷走的比例
選項:
-s: 顯示記憶體的統計資料
八. pmap指令:
pmap - report memory map of a process,檢視程序都占用了哪些記憶體空間
pmap [options] pid [...]
-x: 顯示詳細格式的資訊;
另外一種實作方式:
# cat /proc/PID/maps
九. dstat指令:-系統資源統計資料,支援插件來擴充功能,比較好用
dstat [-afv] [options..] [delay [count]]
-c: 顯示cpu相關資訊;
-C #,#,...,total ---顯示哪一個CPU資訊
-d: 顯示disk讀寫相關資訊;
-D total,sda,sdb,...單獨顯示某個disk,或全部disk
-g:顯示page相關統計資料;
-m: 顯示memory相關統計資料;
-n: 顯示network相關統計資料;
-p: 顯示process相關統計資料;
-r: 顯示io請求相關的統計資料;
-s: 顯示swapped相關的統計資料;
--tcp
--udp
--unix
--raw
--socket---相當于參數tcp,udp,raw一起用
--ipc ----程序間通訊的相關資訊
--top-cpu:顯示最占用CPU的程序;
--top-io: 顯示最占用io的程序;
--top-mem: 顯示最占用記憶體的程序;
--top-latency: 顯示延遲最大的程序,運作起來最慢,跟不上CPU;
十. kill指令:
向程序發送控制信号,以實作對程序管理,不單是殺死程序
顯示目前系統可用信号:
# kill -l 列出kill支援能發出的信号
# man 7 signal
常用信号:
1) SIGHUP: 無須關閉程序而讓其重讀配置檔案,就是不重新開機就讓修改的配置生效;
2) SIGINT: 中止正在運作的程序;相當于Ctrl+c;
9) SIGKILL: 殺死正在運作的程序;
15) SIGTERM:終止正在運作的程序,溫柔的關閉;
18) SIGCONT:程序繼續态
19) SIGSTOP:程序暫停态
指定信号的方法:
(1) 信号的數字辨別;1, 2, 9
(2) 信号完整名稱;SIGHUP
(3) 信号的簡寫名稱;HUP,就是把前面的SIG去掉就行
向程序發信号:
kill [-SIGNAL] PID...
終止“名稱”之下的所有程序:
killall [-SIGNAL] Program
十一. Linux的作業控制
前台作業:通過終端啟動,且啟動後一直占據終端;
背景作業:可以通過終端啟動,但啟動後即轉入背景運作(釋放終端);
如何讓作業運作于背景?
(1) 運作中的作業
Ctrl+z
(2) 尚未啟動的作業
# COMMAND &
此類作業雖然被送往背景運作,但其依然與終端相關;如果希望送往背景後,剝離與終端的關系。也就是終端關閉,程序依然運作:
# nohup COMMAND &
檢視所有作業:
# jobs ,這個指令輸出會顯示作業号
作業控制:
# fg % JOB_NUM:把指定的背景作業調回前台;
# bg % JOB_NUM:讓送往背景的作業在背景繼續運作;
# kill % JOB_NUM:終止指定的作業,這裡的%不能省去
十二. 程序優先級調整:
靜态優先級:100-139,數字越小,優先級越高
程序預設啟動時的nice值為0,優先級為120,nice值的範圍是(-20,19)
nice指令:啟動程序時,以指定優先級運作
nice [OPTION] [COMMAND [ARG]...],例如:nice -n 5 htop
renice指令:對已處于運作态的程序,調整優先級
renice [-n] priority pid...,例如: renice -n 2 3618
檢視:
ps axo pid,comm,ni