2021-05-12 14:32:11
Linux進程管理相關命令詳述
Linux系統上與進程有關的命令:
檢視類命令:
ps,pstree,pidof,pgreppkill,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:
本文永久更新連結地址:https://www.linuxidc.com/Linux/2018-03/151483.htm
相關文章