linux進程管理——進程管理相關命令
查看類命令:
ps,pstree,pidof,pgrep\pkill,top,htop,glances,dstat,vmstat,pmap
管理類命令:
bg,fg,jobs,kill,killall,nohup,nice,renice
pstree命令:
pstree - display a tree of processes
顯示進程之間的關系,用樹狀圖表示
ps命令:
ps - report a snapshot of the current processes.
顯示當前進程的信息;
ps [option]
1 UNIX 風格;必須在選項前邊加上-;
2 BSD 風格;在選項前邊不能有-;
3 GUN 風格;再選項前邊必須有兩個-;
字段含義:
USER:進程的屬主;進程的發起者;
PID:標識進程的唯一性的數字標識符;
CPU:進程在執行過程中占用的CPU處理時間的百分比;
%MEM;進程占用的物理內存百分比;
VSZ:虛擬內存集,可交換內存集;
RSS:常駐內存集,不可交換內存集;
TTY:進程與哪個終端有關聯的,"?"則表示與終端無關;
STAT:
R 運行狀態;running or runnable (on run queue)
S 可中斷睡眠態; interruptible sleep (waiting for an event to complete)
D 不可終端睡眠態; uninterruptible sleep (usually IO)
t 在跟蹤期間被停止;stopped by debugger during the tracing
T 停止進程控制信號;stopped by job control signal
X 死進程; dead (should never be seen)
Z 僵屍進程; defunct ("zombie") process, terminated but not reaped by its parent
< 高優先級; high-priority (not nice to other users)
N 低優先級; low-priority (nice to other users)
L 頁面是否鎖進內存中;has pages locked into memory (for real-time and custom IO)
s 會話領導; is a session leader
l 多線程;is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ 前進程組; is in the foreground process group
START:至今仍未被結束的進程被開啟的時間戳;
TIME:當前進程累計占用CPU的總時間;
COMMAND:啟動該進程的命令行參數;
BSD風格的選項:
a:顯示所有與終端相關的進程;
x:顯示所有與終端無關的進程;
u:顯示發起進程的用戶賬戶名稱;
o format:以自定義的字段,顯示ps命令的執行結果;
UNIX風格的選項:
-u:顯示與指定用戶相關的進程;
-e:顯示所有的進程
-f:顯示完整格式的進程信息:
PPID:父進程的pid
C:表示進程占用的CPU的時間的百分比
-F:顯示完整格式的內存信息:(多了幾項內容)
SZ:虛擬內存集
RSS:常駐內存集
PSR:執行此進程的CPU的核心編號
-H:顯示進程的層級結構(父子關系)
-o format:以自定義的字段,顯示ps命令的執行過結果;
pgrep,pkill命令
pgrep, pkill - look up or signal processes based on name and other attributes
pgrep是查詢進程
pkill是殺掉進程
pgrep [option] pattern
pkill [option] pattern
-U, --uid :顯示進程的真實用戶ID
-u:顯示進程的有效用戶ID
-t terminal:顯示與指定終端關聯的進程;
-a:顯示進程的完整命令行參數;
比如:
我在kill掉我的ssh後,我的 X shell 就斷開了,因為 X shell 是基於ssh協議來進行遠程連接的,我只能在我的虛擬機上重啟了一下ssh進程;
然後,我的 X shell 才可以正常連上;
pidof:
pidof -- find the process ID of a running program.
根據指定的正在運行的進程名稱查找其對於的進程號;
top命令:
top - display Linux processes
當在linux中輸入top時;我們會看到如圖所示的動態的顯示信息:解釋一下具體的信息
第一行:
當前系統時間;
系統自上次斷電以後運行的總時長;
當前登錄系統的用戶的總數;
在過去的1分鐘,5分鐘,15分鐘的三個時間段內,CPU上等待執行的進程的隊列的長度。
第二行:
系統中運行的進程的總數;
正在運行的進程數;
處於睡眠態的進程數;
已停止的進程數;
僵死態的進程數;
第三行:各類進程占用CPU時間的百分比的統計信息
us:user space,用戶空間中的進程占用CPU時間的百分比;
sy:system,內核空間中的內核進程占用CPU時間的百分比;
ni:nice,使用nice值調整了進程的優先級之後額外多占CPU時間的百分比;
id:idel,CPU空閑時間的百分比;
wa:waiting,等待IO完成的進程占用的CPU時間的百分比;
hi:hardware interupting,處理硬件中斷事件所限號的CPU時間的百分比;
si:software interupting,處理軟件中斷事件所限號的CPU時間的百分比;
st:stolen,被虛擬化程序等進程偷偷占用的CPU時間的百分比;
第四行:以kib為單位顯示物理內存空間的使用情況的統計信息;
total:物理內存空間的總大小;
free:空閑的物理空間大小;
userd:已經被使用的物理空間的大小,不可回收;
buff/cache:用於緩沖區和緩沖區的物理內存的空間大小;這段內存是可以隨時回收,並不算真正的消耗;
第五行:以kib為單位顯示swap空間的使用情況的統計信息;
total:swap空間的總大小;
free:swap空間剩余空間大小;
used:已經被占用的swap空間大小;
avail mem:真正的可用的物理內存的空間大小;
交互式命令:(在進入界面之後才會生效的命令)
1:顯示或隱藏CPU各核心的詳細信息;
P:根據各個進程對CPU時間的占用百分比進行降序排序;
M:根據各個進程對物理內存空間占用的百分比進行降序排序;
T:根據各個進程對CPU時間占用的百分比進行降序排序;
l:顯示或隱藏第一行,uptime等信息;
t:顯示或隱藏第二、三行信息
m:顯示或隱藏第四、五行信息
q:退出top的交互式模式
s:修改top命令的刷新時間間隔;
k:向指定PID的進程發送指定的信號;
信號:kill -l查詢
常用的選項:
-d #:指定top交互式模式中的刷新間隔,默認是3秒;
-b:非交互式顯示結果
vmstat命令:
Procs
r: 等待運行的進程數
b: 處在非中斷睡眠狀態的進程數
w: 被交換出去的可運行的進程數。
此數由 linux 計算得出,但 linux 並不耗盡交換空間
Memory
swpd: 虛擬內存使用情況,單位:KB
free: 空閑的內存,單位KB
buff: 被用來做為緩存的內存數,單位:KB
Swap
si: 從磁盤交換到內存的交換頁數量,單位:KB/秒
o: 從內存交換到磁盤的交換頁數量,單位:KB/秒
IO
bi: 發送到塊設備的塊數,單位:塊/秒
bo: 從塊設備接收到的塊數,單位:塊/秒
System
in: 每秒的中斷數,包括時鐘中斷
cs: 每秒的環境(上下文)切換次數
CPU
按 CPU 的總使用百分比來顯示
us: CPU 使用時間
sy: CPU 系統使用時間
id: 閑置時間
常用選項:
-a,--active:顯示活躍的以及非活躍的內存空間數量;
-s,--stats:從/proc/meminfo文件中抽取的信息,加工後輸出;
delay:指示在指定的時間重復執行vmstat命令;默認單位為秒;
count:重復執行vmstat命令的次數;
pmap命令:
pmap - report memory map of a process
pmap [options] pid [...]
-x, --extended:顯示擴展信息;
htop - interactive process viewer
htop [-dChusv]
常用選項:
-d --delay=DELAY:htop命令的數據刷新時間間隔;
-s:根據指定的字段進行排序;
-u:僅顯示指定用戶擁有的進程;
常用的交互式命令:
l:顯示指定進行所有打開的文件列表;
t:顯示進程樹結構,可以顯示出進程之間的父子關系;相當於F5鍵的功能;
a:設定進程的CPU親源性,將選定進程的綁定至某個CPU核心上運行;
glances:
glances - A cross-platform curses-based monitoring tool
glances [-bdmn] [-t refresh] [-f file] [-o output]
常用選項:
-b:以Byte為單位顯示網卡的數據通信速率;默認是比特每秒;
-d:禁用disk I/O模塊;
-m:禁用mount模塊;
-n:禁用network模塊;
-t refresh:以秒為單位指定數據刷新時間間隔;
-f /PATH/TO/OUTPUT_DIR:指定輸出文件的路徑;
-o {HTML|CSV}:為輸出到文件的數據指定數據格式;
-s:將glances進程作為服務進程,因此可以提供基於套接字的網絡訪問;
-B @IP|HOST:將glances進程綁定到指定的IP地址上;通常與-s選項一起使用;
glances可以工作於C/S模型下;
S:服務器模式
# glances -s -B IPADDR
IPADDR指的是服務器上本地某個可用的IP地址;
C:客戶端模式
# glances -c SERVER_IPADDR
SERVER_IPADDR指的是從遠程客戶端是哪個發起連接的目標服務器的IP地址;
glances交互式操作命令;
b:網絡模塊中的速率統計在bps和Bps間切換;
c:根據CPU占用率進行進程排序;
m:根據內存占用率進行進程排序;
n:隱藏或顯示NERWORK模塊;
d:隱藏或顯示DISK模塊;
f:隱藏或顯示FILE模塊;
t:恢復默認進程排序;
h:顯示help幫助信息;
....
dstat:
dstat - versatile tool for generating system resource statistics
stat [-afv] [options..] [delay [count]]
常用選項:
-c,--cpu:僅顯示與CPU相關的統計信息;
-d,--disk:僅顯示與磁盤等IO設備相關的統計信息;
-g,--page:僅顯示與page相關的信息;
-n,--net:僅顯示與網絡接口相關的統計信息;
-s,--swap:僅顯示與交換分區相關的統計信息;
-y,--system:僅顯示與系統相關的統計信息;
--tcp:僅顯示與TCP協議的連接狀態相關的統計信息;
--udp:僅顯示與UDP協議的連接狀態相關的統計信息;
kill:
kill - 終止進程
kill [-s signal|-p] [--] pid...
kill -l [signal]:查看當前系統中支持的信號的種類和信號名稱;
有效的信號表示方法:
1.使用信號的數字編碼進行信號表示;
2.使用信號的完整名稱進行信號表示;
3.使用信號的簡寫名稱進行信號表示;簡寫名稱不包含"SIG"的其余部分;
常用的信號:
1) SIGHUP: 無需關閉對應進程而直接讓其重新讀取其自身的配置文件;
2) SIGINT:終止運行於前臺的進程,使用Ctrl+c組合鍵,可以發送此信號;
9) SIGKILL: 沒有任何預兆終止正在運行的進程,進程所有占用的資源都不會被立即回收;
15) SIGTERM:kill命令默認發送的信號;終止進程的運行,
18) SIGCONT:讓轉入後臺的進程在後臺繼續運行;
19) SIGSTOP:讓轉入後臺的進程在後臺停止運行;
killall
killall - 以名字方式來殺死進程
killall [options] ...PROCRSS_NAME..
常用選項:
-u:僅向指定所有者所擁有的進程發送信號;
-s:向指定名稱的進程發送指定的非SIGTERM信號;
-I:忽略進程名稱大小寫的區別;
進程作業:
前臺作業:
foreground jobs,一般是通過終端啟動並且在啟動後一直占據終端的進程;
後臺作業:
background jobs,一般系統啟動時隨系統啟動,也可以通過終端啟動,但啟動後理解釋放對終端的占用,此時我們稱其為"後臺運行";
使進程從前臺轉移至後臺:
1.正在運行的前臺作業;
Ctrl+z
2.對於尚未啟動的進程,使其在啟動後自動轉入後臺:
# COMMAND &
註意:此類從前臺啟動直接轉入後臺運行的進程,始終是與終端有關的進程,因此,如果終端被關閉,或shell進程被終止,則此類進程也會被終止;
3.對於尚未啟動的進程,使其在啟動後自動轉入後臺,並同時剝離其與終端的關聯關系;
# nohup COMMAND &
查看後臺作業的信息:
jobs
將後臺作業轉入到前臺運行:
fg [JOB_ID]
註意:如果省略JOB_ID,則在後臺進程中以"+"標識的作業會被轉入前臺;
終止後臺進程作業:
kill %JOB_ID:將後臺作業結束;
調整進程優先級的命令;
nice,renice
進程的優先級:
0-139
0
1-99
100-139:動態優先級;通過調整進程的nice值來改變進程的動態優先級;
NICE值的取值範圍:-20~19
默認情況下,所有用戶進程的動態優先級都是120,而所有進程的NICE值默認都為0;
只有超級用戶root才能使用附屬的NICE值,進而提升進程的優先級;普通用戶僅能使用正數的NICE值,進而降低進程的優先級;
nice
nice - run a program with modified scheduling priority
nice [OPTION] [COMMAND [ARG]...]
-n:為後面的進程調整nice值;默認為10;
renice:
renice - alter priority of running processes
renice [-n] priority [-gpu] identifier...
常用選項:
-n priority :設置此次要調整的nice值;即在原有的nice值之上追加上此處指定的數量;
-p pid:
linux進程管理——進程管理相關命令