前言
ps命令——查看靜態的進程狀態(Processes Statistics)
目錄
一、描述
二、命令
三、示例
四、總結
五、思維導圖
一、描述
1、作用
- 查看靜態的進程狀態(Processes Statistics)
ps命令是linux系統中最為常用的進程查看工具,主要用于顯示包含當前運行的各進程完整信息的靜態快照。
2、進程狀態
- D:無法中斷的休眠狀態(通常為IO進程)
- R:正在運行以及可運行狀態(在運行隊列中)
- S:可以中斷的休眠狀態(等待某一時間的完成)
- T:暫停執行
- t:在跟蹤期間被調試器停止
- W:沒有足夠的記憶體分頁可分配
- X:已死亡
- Z:不存在但暫時無法消除
對于BSD格式,當使用stat關鍵字時,可能會顯示其他字符:
- <:優先級更高的進程
- N:優先級更低的進程
- L:將頁面鎖定到內存中(用于實時和自定義IO)
- s:是一個session的領導者
- l:是一個多線程
- +:是一個在后臺運行的項目組
3、優先級——nice、priority
- 以數字形式給內核表示進程的優先級
- NI的值越高,優先級越低
- NI值越低或負,則表示優先級越高
- NI的取值范圍:-20 ~ 19
- priority的值越小越早被執行
二、命令
1、語法
ps [options]
2、常用選項介紹
- [ -a ]:顯示當前終端所有(all)用戶的進程(包括其他用戶的)
- [ u ]:使用以用戶(user)為主的格式輸出進程信息
- [ -u ] 用戶名:顯示特定用戶的進程
- [ -x ]:顯示當前用戶沒有控制終端的進程
- [ -l ]:使用長(long)格式顯示進程信息
- [ -w ]:寬行顯示,可以使用多個w進行加寬顯示
- [ -e ]:顯示系統內的所有(every)進程(包含用戶進程、沒有控制終端系統進程)信息
- [ -f ]:使用完整(Full)的格式顯示進程信息
- [ -A ]:列出所有進程
注意:選項帶" - "和不帶前綴" - "是有區別的。
3、命令返回字段含義
命令返回的結果是以列表形式出現的,列表中主要字段的含義如下:
- USER:啟動該進程的用戶名,即進程所有者的用戶名
- UID:進程所屬的用戶ID,在當前系統中是唯一的
- PID(Process ID):該進程在系統中的標識號(ID號)
- PPID:進程的父進程標識號
- %CPU:該進程占用的CPU使用率
- %MEM:該進程占用的物理內存和總內存的百分比
- TTY:表明該進程在哪個終端上運行(" ? "標識為未知或不需要終端)
- VSZ/VIRT:占用的虛擬內存(swap空間)的大小(單位:KB)
- RSS/RES:占用的固定內存(物理內存)的大?。▎挝唬篕B)
- SHR:進程使用的共享內存的大?。▎挝唬篕B)
- COMMAND/CMD:啟動該進程的命令的名稱。列中的信息用中括號(" [ ] ")括起來則說明該進程為內核線程(Kernel thread),一般以k開頭
- TIME:實際使用CPU的時間
- STIME:進程的啟動時間
- TIME+:進程啟動后占用的總的CPU時間(CPU使用時間的累加)
- STAT/S:進程當前的狀態
- START:啟動該進程的時間
- PRI/PR:進程的優先級(priority)
- NI:進程的友善度(niceness)
三、示例
1、使用標準語法查看系統上的所有進程
[root@localhost ~]# ps -ejH
PID PGID SID TTY TIME CMD
2 0 0 ? 00:00:00 kthreadd
4 0 0 ? 00:00:00 kworker/0:0H
5 0 0 ? 00:00:00 kworker/u256:0
......
[root@localhost ~]# ps axjf
PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND
0 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:0]
......
2、使用BSD格式查看所有進程
[root@localhost ~]# ps -eLf
UID PID PPID LWP C NLWP STIME TTY TIME CMD
root 1 0 1 0 1 15:02 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 2 0 1 15:02 ? 00:00:00 [kthreadd]
root 4 2 4 0 1 15:02 ? 00:00:00 [kworker/0:0H]
......
[root@localhost ~]# ps axms
UID PID PENDING BLOCKED IGNORED CAUGHT STAT TTY TIME COMMAND
0 1 0000000000000000 - - - - ? 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize
0 - 0000000000000000 7be3c0fe28014a03 0000000000001000 00000001800004ec Ss - 0:02 -
0 2 0000000000000000 - - - - ? 0:00 [kthreadd]
......
3、打印進程樹
[root@localhost ~]# ps -eo euser,ruser,suser,fuser,f,comm,label
EUSER RUSER SUSER FUSER F COMMAND LABEL
root root root root 4 systemd system_u:system_r:init_t:s0
root root root root 1 kthreadd system_u:system_r:kernel_t:s0
root root root root 1 kworker/0:0H system_u:system_r:kernel_t:s0
......
[root@localhost ~]# ps axZ
LABEL PID TTY STAT TIME COMMAND
system_u:system_r:init_t:s0 1 ? Ss 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
system_u:system_r:kernel_t:s0 2 ? S 0:00 [kthreadd]
system_u:system_r:kernel_t:s0 4 ? S< 0:00 [kworker/0:0H]
......
[root@localhost ~]# ps -eM
LABEL PID TTY TIME CMD
system_u:system_r:init_t:s0 1 ? 00:00:02 systemd
system_u:system_r:kernel_t:s0 2 ? 00:00:00 kthreadd
system_u:system_r:kernel_t:s0 4 ? 00:00:00 kworker/0:0H
4、獲取關于線程的信息
[root@localhost ~]# ps -eLf
UID PID PPID LWP C NLWP STIME TTY TIME CMD
root 1 0 1 0 1 15:02 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 2 0 1 15:02 ? 00:00:00 [kthreadd]
root 4 2 4 0 1 15:02 ? 00:00:00 [kworker/0:0H]
......
[root@localhost ~]# ps axms
UID PID PENDING BLOCKED IGNORED CAUGHT STAT TTY TIME COMMAND
0 1 0000000000000000 - - - - ? 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize
0 - 0000000000000000 7be3c0fe28014a03 0000000000001000 00000001800004ec Ss - 0:02 -
0 2 0000000000000000 - - - - ? 0:00 [kthreadd]
......
5、獲取安全的信息
[root@localhost ~]# ps -eo euser,ruser,suser,fuser,f,comm,label
EUSER RUSER SUSER FUSER F COMMAND LABEL
root root root root 4 systemd system_u:system_r:init_t:s0
root root root root 1 kthreadd system_u:system_r:kernel_t:s0
root root root root 1 kworker/0:0H system_u:system_r:kernel_t:s0
......
[root@localhost ~]# ps axZ
LABEL PID TTY STAT TIME COMMAND
system_u:system_r:init_t:s0 1 ? Ss 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
system_u:system_r:kernel_t:s0 2 ? S 0:00 [kthreadd]
system_u:system_r:kernel_t:s0 4 ? S< 0:00 [kworker/0:0H]
......
[root@localhost ~]# ps -eM
LABEL PID TTY TIME CMD
system_u:system_r:init_t:s0 1 ? 00:00:02 systemd
system_u:system_r:kernel_t:s0 2 ? 00:00:00 kthreadd
system_u:system_r:kernel_t:s0 4 ? 00:00:00 kworker/0:0H
四、總結
- ps顯示有關活動進程的信息
- 是Linux系統中最為常用的進程查看工具
- ps語法:ps [options]
五、思維導圖