linux runable进程查询,关于Linux下进程的详解【进程查看与管理】
一、關(guān)于進(jìn)程
進(jìn)程:?已經(jīng)啟動的可執(zhí)行程序的運行實力
進(jìn)程的組成:一個進(jìn)程包含內(nèi)核中的一部分地址空間和一系列數(shù)據(jù)結(jié)構(gòu)。其中地址空間是內(nèi)核標(biāo)記的一部分內(nèi)存以供進(jìn)程使用,而數(shù)據(jù)結(jié)構(gòu)則用來紀(jì)錄每個進(jìn)程的具體信息。
最主要的進(jìn)程信息包括:
進(jìn)程的地址空間圖
進(jìn)程當(dāng)前的狀態(tài)( sleeping、stopped、runnable 等)
進(jìn)程的執(zhí)行優(yōu)先級
進(jìn)程調(diào)用的資源信息
進(jìn)程打開的文件和網(wǎng)絡(luò)端口信息
進(jìn)程的信號掩碼(指明哪種信號被屏蔽)
進(jìn)程的屬主
PID :進(jìn)程 ID
每個進(jìn)程都會從內(nèi)核獲取一個唯一的 ID 值。絕大多數(shù)用來操作進(jìn)程的命令和系統(tǒng)調(diào)用,都需要用 PID 指定操作的進(jìn)程對象。
PPID :父進(jìn)程 ID
在 Unix 和 Linux 系統(tǒng)中,一個已經(jīng)存在的進(jìn)程必須“克隆”它自身來創(chuàng)建一個新的進(jìn)程。當(dāng)新的進(jìn)程克隆后,最初的進(jìn)程便作為父進(jìn)程存在。
UID & EUID:真實用戶 ID 和有效用戶 ID
一個進(jìn)程的 UID 是其創(chuàng)建者的身份標(biāo)志(也是對其父進(jìn)程 UID 的復(fù)制)。通常只有進(jìn)程的創(chuàng)建者和超級用戶才有操作該進(jìn)程的權(quán)限。
EUID 是一個額外的 UID,用來決定在任意一個特定時間點,一個進(jìn)程有權(quán)限訪問的文件和資源。對絕大多數(shù)進(jìn)程而言,UID 和 EUID 是相同的(特殊情況即 setuid)
Niceness
一個進(jìn)程的計劃優(yōu)先級決定了它能獲取到的 CPU 時間。內(nèi)核有一個動態(tài)的算法來計算優(yōu)先級,同時也會關(guān)注一個 Niceness 值,來決定程序運行的優(yōu)先順序。
二、信號
信號屬于進(jìn)程級別的中斷請求。它們可以作為進(jìn)程間通信的手段,或者由終端發(fā)送以殺死、中斷、掛起某個進(jìn)程。
Linux的信號列表:
[root@web ~]# kill -l1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR111) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
常用信號:
9)SIGKILL:用來立即結(jié)束程序的運行。本信號不能被阻塞、處理和忽略。
15)SIGTERM:程序結(jié)束(terminate)信號。與SIGKILL不同的是該信號可以被阻塞和處理。通常用來要求程序自己正常(優(yōu)雅地)退出。shell命令kill缺省產(chǎn)生這個信號。
19)SIGSTOP:停止(stopped)進(jìn)程的執(zhí)行。注意它和terminate以及interrupt的區(qū)別:該進(jìn)程還未結(jié)束,只是暫停執(zhí)行。本信號不能被阻塞、處理或忽略。
三、ps命令
簡介:ps 命令就是最根本相應(yīng)情況下也是相當(dāng)強(qiáng)大地進(jìn)程查看命令.運用該命令可以確定有哪些進(jìn)程正在運行和運行地狀態(tài)、 進(jìn)程 是否結(jié)束、進(jìn)程有沒有僵死、哪些進(jìn)程占用了過多地資源等等.總之大部分信息均為可以通過執(zhí)行該命令得到
命令常用參數(shù):ps【選項】
-e 顯示所有進(jìn)程,環(huán)境變量
-f 全格式
-h 不顯示標(biāo)題
-l 長格式
-w 寬輸出
a
顯示終端上地所有進(jìn)程,包括其他用戶地進(jìn)程
命令使用案例:
列出所有進(jìn)程:
[root@web ~]# psaux
USER PID%CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root1 0.0 0.7 190900 3796 ? Ss 09:28 0:01 /usr/lib/syste
root2 0.0 0.0 0 0 ? S 09:28 0:00[kthreadd]
root4 0.0 0.0 0 0 ? S< 09:28 0:00 [kworker/0:0H]
root5 0.0 0.0 0 0 ? S 09:28 0:00 [kworker/u256:
root6 0.0 0.0 0 0 ? S 09:28 0:00 [ksoftirqd/0]
[root@web ~]# psef
PID TTY STAT TIME COMMAND918 pts/0 Ss 0:00 -bash USER=root LOGNAME=root HOME=/root PATH=/usr/lo949 pts/0 S 0:00 \_ bash XDG_SESSION_ID=4 HOSTNAME=172.16.234.111TE1258 pts/0 R+ 0:00 \_ ps ef XDG_SESSION_ID=4 HOSTNAME=172.16.234.1
列出類似進(jìn)程樹的程序:
[root@web ~]# psaxjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND0 2 0 0 ? -1 S 0 0:00[kthreadd]2 4 0 0 ? -1 S< 0 0:00 \_ [kworker/0:0H]2 5 0 0 ? -1 S 0 0:00 \_ [kworker/u256:2 6 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/0]2 7 0 0 ? -1 S 0 0:00 \_ [migration/0]
-l : 列出和當(dāng)前用戶有關(guān)的進(jìn)程 -u 用戶 : 查看某一用戶的進(jìn)程狀態(tài)
進(jìn)程的五種狀態(tài)碼表示:
D 不可中斷(收到信號不喚醒和不可運行, 進(jìn)程必須等待直到有中斷發(fā)生)
R 運行(正在運行或在運行隊列中等待)
S 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
T 停止(進(jìn)程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號后停止運行運行
Z 僵死(進(jìn)程已終止, 但進(jìn)程描述符存在, 直到父進(jìn)程調(diào)用wait4()系統(tǒng)調(diào)用后釋放)
ps -aux 參數(shù)解釋
%CPU:占用的CPU使用率
%MEM:占用的記憶體 / 內(nèi)存使用率
VSZ:占用虛擬記憶體 / 內(nèi)存大小
RSS:占用的記憶體 / 內(nèi)存大小
TTY:終端的次要裝置號碼 / 線路
STAT:該進(jìn)程的狀態(tài)
START:進(jìn)程開始時間
TIME:執(zhí)行的時間
COMMAND:所執(zhí)行的指令
注:在 STAT 欄目中:
< 表示高優(yōu)先級
n 表示低優(yōu)先級
s 包含子進(jìn)程
+ 位于后臺的進(jìn)程組
四、top命令
查看實時的進(jìn)程狀態(tài),實現(xiàn)動態(tài)監(jiān)控進(jìn)程,top?命令可以實時顯示系統(tǒng)當(dāng)前活躍進(jìn)程的總體信息及其占用的資源。
top - 16:21:00 up 6:52, 1 user, load average: 0.00, 0.01, 0.05Tasks:95 total, 1 running, 94 sleeping, 0 stopped, 0zombie%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0st
KiB Mem :479664 total, 268788 free, 98624 used, 112252 buff/cache
KiB Swap:2097148 total, 2097148 free, 0 used. 362524avail Mem
PID USER PR NI VIRT RES SHR S%CPU %MEM TIME+COMMAND407 root 20 0 0 0 0 S 0.3 0.0 0:01.19 xfsaild/dm+
1 root 20 0 190900 3796 2584 S 0.0 0.8 0:02.00systemd2 root 20 0 0 0 0 S 0.0 0.0 0:00.00kthreadd4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+
5 root 20 0 0 0 0 S 0.0 0.0 0:00.57 kworker/u2+
6 root 20 0 0 0 0 S 0.0 0.0 0:00.74 ksoftirqd/0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
top?命令的?-d?選項可以指定信息刷新的時間間隔。同時還有一些常用的交互命令
K:殺死一個進(jìn)程,后面接進(jìn)程的PID和指定需要處理的信號;默認(rèn)值為15,強(qiáng)制殺死進(jìn)程為9
M:按駐留內(nèi)存使用率大小排序
P:按CPU使用率百分比大小排序
q:退出top程序
s:修改兩次信息刷新的時間間隔,默認(rèn)單位為秒
W:將當(dāng)前設(shè)置寫入~/.toprc文件中
top命令一些信息字段含義:
1.系統(tǒng)運行時間和負(fù)載情況:
top - 10:45:08 up 1:19, 2 users, load average: 0.00, 0.01, 0.05
系統(tǒng)當(dāng)前時間
系統(tǒng)已運行的時長
登陸用戶數(shù)量
系統(tǒng)在5分鐘、10分鐘、15分鐘的負(fù)載情況;
注意?load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進(jìn)程數(shù),然后按特定算法計算出的數(shù)值。如果這個數(shù)除以邏輯CPU的數(shù)量,結(jié)果高于5的時候就表明系統(tǒng)在超負(fù)荷運轉(zhuǎn)了
2.任務(wù):
Tasks: 97 total, 1 running, 96 sleeping, 0 stopped, 0 zombie
Task-任務(wù),分別顯示任務(wù)進(jìn)程的總數(shù)量以及正在運行、睡眠、停止、僵死的進(jìn)程數(shù)
3.CPU狀態(tài):
%Cpu(s): 1.0 us, 1.0 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us:用戶空間占用CPU的百分比
sy:系統(tǒng)空間占用CPU的百分比
ni:改變過優(yōu)先級的進(jìn)程占用CPU的百分比
id:空閑CPU的百分比
wa:IO等待占用CPU的百分比
hi:處理硬件中斷的CPU時間(Hardware IRQ)
si:處理軟件中斷的CPU時間(Software Interrupts)
st:這個虛擬機(jī)被hypervisor偷去的CPU時間(譯注:如果當(dāng)前處于一個hypervisor下的vm,實際上hypervisor也是要消耗一部分CPU處理時間的)
注:在這里CPU的使用比率和windows概念不同,如果你不理解用戶空間和內(nèi)核空間——>傳送門:https://www.cnblogs.com/sparkdev/p/8410350.html
4.內(nèi)存使用:
KiB Mem : 479664 total, 278252 free, 89548 used, 111864 buff/cache
KiB Swap:2097148 total, 2097148 free, 0 used. 371568 avail Mem
第一行是物理內(nèi)存使用,第二行是虛擬內(nèi)存使用(交換空間)
內(nèi)存顯示以KB為單位,物理內(nèi)存顯示如下:全部可用內(nèi)存、空閑內(nèi)存、已使用內(nèi)存、緩沖內(nèi)存。 交換部分顯示的是:全部、空閑、已使用、總的可使用內(nèi)存。
5.各進(jìn)程任務(wù)狀態(tài)監(jiān)控:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+COMMAND1 root 20 0 43400 3736 2568 S 0.0 0.8 0:01.71systemd2 root 20 0 0 0 0 S 0.0 0.0 0:00.00kthreadd4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker+
PID:進(jìn)程ID,進(jìn)程的唯一標(biāo)識符
USER:進(jìn)程所有者的實際用戶名。
PR:進(jìn)程的調(diào)度優(yōu)先級。這個字段的一些值是"rt"。這意味這這些進(jìn)程運行在實時態(tài)。
NI:進(jìn)程的nice值(優(yōu)先級)。越小的值意味著越高的優(yōu)先級。負(fù)值表示高優(yōu)先級,正值表示低優(yōu)先級
VIRT:進(jìn)程使用的虛擬內(nèi)存。進(jìn)程使用的虛擬內(nèi)存總量,單位kb。VIRT=SWAP+RES
RES:駐留內(nèi)存大小。駐留內(nèi)存是任務(wù)使用的非交換物理內(nèi)存大小。進(jìn)程使用的、未被換出的物理內(nèi)存大小,單位kb。RES=CODE+DATA
SHR:SHR是進(jìn)程使用的共享內(nèi)存。共享內(nèi)存大小,單位kb
S:這個是進(jìn)程的狀態(tài)。它有以下不同的值:
D - 不可中斷的睡眠態(tài)。
R – 運行態(tài)
S – 睡眠態(tài)
T – 被跟蹤或已停止
Z – 僵尸態(tài)
%CPU:自從上一次更新時到現(xiàn)在任務(wù)所使用的CPU時間百分比。
%MEM:進(jìn)程使用的可用物理內(nèi)存百分比。
TIME+:任務(wù)啟動后到現(xiàn)在所使用的全部CPU時間,精確到百分之一秒。
COMMAND:運行進(jìn)程所使用的命令。進(jìn)程名稱(命令名/命令行)
還有許多在默認(rèn)情況下不會顯示的輸出,它們可以顯示進(jìn)程的頁錯誤、有效組和組ID和其他更多的信息。
參考:
總結(jié)
以上是生活随笔為你收集整理的linux runable进程查询,关于Linux下进程的详解【进程查看与管理】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php加密解密p源码可以吗,论 如何做好
- 下一篇: linux删除之前的文件在哪里,Linu