介紹Linux進程查看及管理的工具:pstree, ps, pidof, pgrep, top, htop, glance, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohupsession
一. pstree命令:多線程
pstree - display a tree of processesapp
二. ps: process state, report a snapshot of the current processessocket
Linux系統各進程的相關信息均保存在/proc/PID目錄下的各文件中,每個PID都是一個進程號,PID中的cmdline文件說明了這個進程是由哪一個文件啓動的;tcp
ps [OPTION]... 選項:支持兩種風格ide
1) BSD風格,前面沒- ,工具
經常使用組合:aux性能
u: 以用戶爲中心組織進程狀態信息顯示ui
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