一、進程查看命令
1.pstree
用于查看進程樹之間的關系,誰是父進程,誰是子進程,可以清楚的看出來是誰創建了誰
語法:
pstree [選項]
-A | 各進程樹之間的連接以ASCII碼字符來連接 |
-U | 各進程樹之間的連接以utf8字符來連接,某些終端可能會有錯誤 |
-a | 同時列出每個進程的PID |
-u | 同時列出每個進程的所屬賬號名稱 |
2.ps
顯示系統當前進程瞬間運行狀態
語法:
ps [選項]
-A | 所有的進程均顯示出來,與-e具有同樣的效用 |
-a | 顯示現行終端機下的所有進程,包括其他用戶的進程 |
-u | 以用戶為主的進程狀態 |
-x | 通常與 a 這個參數一起使用,可列出較完整信息 |
-l | 較長、較詳細的將該PID 的的信息列出 |
輸出解析
USER:進程的所有者
PID:進程的ID
%CPU:進程占用的CPU百分比
%MEN:進程占用的內存百分比
VSZ:進程使用的虛擬內存大小
RSS:進程使用的物理內存大小
TTY:進程所在的終端
STAT:進程的狀態,如S(休眠),R(運行),Z(僵尸進程)等
START:進程的啟動時間
TIME:進程啟動耗時時間
COMMAND:啟動進程的命令
進程狀態:
S:休眠
s:父進程
R:運行
Z:僵尸進程(前臺程序已死,但后臺駐留進程沒有正常退出;后果就是占用資源不干活。)
在Linex系統中,ps aux命令可以查看當前運行的進程及其詳細信息
ps aux輸出的進程狀態STAT詳解
狀態碼 | 含義 | 說明 |
R | Running(運行中) | 進程正在運行或可運行(在運行隊列中) |
S | Interruptible Sleep (可中斷睡眠) | 進程在等待事件(如I/O、信號),可被信號喚醒 |
D | Uninterruptible Sleep (不可中斷睡眠) | 進程在等待硬件I/O(如磁盤讀寫),不能被信號喚醒,通常與內核相關 |
T | Stopped (已停止) | 進程信號被信號暫停,或正在被調試? |
Z | Zombie (僵尸進程) | 進程已終止,但父進程尚未調用Wait()?回收資源。 |
`X`` | Dead (已死亡) | 進程已完全停止 |
I | Idle (空閑) | 內核線程,處于空閑狀態(較新內核使用) |
< | High Priority (高優先級) | 進程優先級較高 |
N | Low Priority (低優先級) | 進程優先級較低 |
s | Session Leader (會話領導者) | 進程是會話(Session)的首進程 |
l | Multi-threaded (多線程) | 進程是多線程的 |
+ | Foreground (前臺進程) | 進程屬于前臺進程組(如終端運行的命令) |
常見進程狀態組合
Ss:會話領導者(s),處于可中斷睡眠(S)
Ssl:多線程(l)的會話領導者(s)
R+:前臺運行(+)的進程(R)
D:不可中斷睡眠(D),常見于磁盤I/O密集型任務
Z:僵尸進程(Z),需要父進程回收資源
I<:內核空閑線程(I),低優先級(<)
顯示所有進程:
ps aux | grep nginx
顯示父子進程關系:
ps -efj
動態查看進程狀態:
top
ps -elf命令詳解
語法:
ps -elf
-e:顯示所有進程
-l:長格式輸出,顯示更多字段
-f:完整格式輸出,顯示完整的命令行和用戶信息
關鍵字段詳解
1.進程狀態(S)列
R:運行中(Running)
S:可中斷睡眠(Interruptible Sleep,等待事件)
D:不可中斷睡眠(Uninterruptible Sleep,通常與磁盤I/O相關)
Z:僵尸進程(Zombie)
T:已停止(Stopped,如被SIGSTOP暫停)
I:空閑(Idle,內核線程)
2.優先級
PRI:進程的實際優先級(由內核動態調整,數值越小優先級越高)
NI:Nice值(用戶可調整的優先級修正值):
-20:最高優先級(搶占更多CPU)
19:最低優先級(CPU友好,適合后臺任務)
3.WCHAN列
顯示進程當前等待的內核事件
若為 -,表示進程正在運行或無需等待
4.CMD列
-f選項會顯示完整命令行(包括參數),而ps aux默認截斷長命令
常用組合命令
1.查找特定進程
ps -elf | grep nginx
2.查看進程樹(父子關系)
ps -elf --forest
3.按CPU或內存排序
ps -elf --sort=-%cpu # 按CPU降序
ps -elf --sort=-%mem # 按內存降序
4.查看僵尸進程
ps -elf | grep 'Z'
3.pgrep
查看進程的信息,包括進程是否已經消亡,通過pgrep來獲得正在被調度的進程的相關信息。 pgrep通過匹配其程序名,找到匹配的進程
語法:
pgrep [選項] pidname
-l | 同時顯示進程名和PID |
-o | 當匹配多個同一命令啟動的進程時,顯示進程號最小的那個 |
-n | 當匹配多個同一命令啟動的進程時,顯示進程號最大的那個 |
4.top,htop
top:動態監控系統處理器狀態,htop姑且稱之為top的增強版
yum install epel-release -y #安裝epel源
yum install htop -y #安裝htop
常用選項
-d:指定更新的間隔時間,以秒為單位
-n:指定更新的次數
-p:監控指定進程的ID
-u:監控指定用戶的進程
常用按鍵
空格鍵:立即刷新顯示
M:按照內存使用百分比對進程進行排序
P:按照 CPU 使用百分比對進程進行排序
T:按照進程運行時間對進程進行排序
q:退出 top 命令
h:顯示幫助信息
二、進程管理命令
1.kill
語法:
kill [選項] pid
-l | 列出所有信號參數 |
-a | 當處理當前進程時 |
-u | 指定用戶 |
-p | 指定kill 命令只打印相關進程的進程號,而不發送任何信號 |
-s | 發送指定的信號 |
-9 | 強制殺死 |
-0 | 用來檢測一個進程是否存在 |
信號列表
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR213) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+439) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+843) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+1247) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-1451) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-1055) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-659) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-263) SIGRTMAX-1 64) SIGRTMAX
2.pkill和killall
pkill是ps命令和kill命令的結合,按照進程名來殺死指定進程,pkill和killall應用方法差不多,也是直接殺死運行中的程序,如果想殺掉單個進程,請用kill來殺掉
語法:
pkill/killall [選項] 進程名