简介
ps通过读取 /proc 中的虚拟文件来工作,不需要 setuid kmem 或有任何特权来运行。
CPU使用率目前表示为进程整个生命周期中运行所花费时间的百分比。这是不理想的,它不符合ps在其他方面所符合的标准。CPU使用率加起来不太可能达到100%。
SIZE和RSS字段不计算进程的某些部分,包括页表、内核堆栈、结构体 thread_info 和结构体 task_struct。通常至少有20kib的内存是常驻的。
标记为 <defunct> 的进程是死进程(所谓的“僵尸”),因为它们的父进程没有正确地销毁它们,所以它们仍然存在。如果父进程退出,这些进程将被init(8)销毁。如果用户名的长度大于显示列的长度,则显示数字用户ID。不建议使用 ps -aux 等命令选项,因为这会混淆两种不同的标准。根据POSIX和UNIX标准,上面的命令要求显示带有TTY的所有进程(通常是用户正在运行的命令)加上名为“x”的用户拥有的所有进程。如果用户不存在,ps 会认为你说的是 ps aux。
目录
1. 语法
1.1. 常用参数
基本选项
按列表选择
输出格式
显示读
其他选项
OBSOLETE 排序键
2. 推荐用法
2.1. 标准语法
2.2. BSD语法
2.3. 打印进程树
2.4. 获取有关线程的信息
2.5. 获取安全信息
2.6. 自定义输出格式
3. 指定用户
3.1. 指定单个/多个用户
3.2. 查看当前用户下进程
4. 排序查询
4.1. 按cpu使用率排序
4.2. 按物理内存使用率排序
4.3. 按虚拟内存使用排序
5. 字段说明
5.1. OS命令类
5.2. CPU类
5.3. 进程类
5.4. 内存类
5.5. 优先级类
5.6. 用户类
5.7. ID类
5.8. 掩码类
5.9. 指针类
5.10. 终端类
1. 语法
ps [选项]
1.1. 常用参数
基本选项
-A:所有进程
-e:所有进程
-a:都使用tty,除了会话引导符
-d:除会议负责人外
-N:取消选择否定选择
a:都使用tty,包括其他用户
r:只运行进程
T:该终端上的所有进程
x:进程而不控制ttys
按列表选择
-C <command>:命令名
-p <PID> :进程id
-q <PID> :进程id(快速模式)
--ppid <PID>:父进程id
-s <session>:会话id
-G <GID> :真实组id或组名
-g <group> :会话或有效组名
-t <tty> :终端
-u <UID> :有效的用户id或名称
-U <UID> :用户id或名称
以逗号分隔的列表:-u root,nobody
以空白分隔的列表:-p 123 4567
输出格式
-F:更完整的格式
-f:完整格式,包括命令行
f:ASCII艺术处理树
-H:显示进程层次结构
-j:作业的格式
j:BSD作业控制格式
-l:长格式
l:BSD长格式
-M, Z:添加安全数据(用于SELinux)
-O <format>:预加载默认列
O <format>:为-O,具有BSD个性
-o <format>:用户定义的格式
s:信号格式
u:面向用户的格式
v:虚拟存储器格式
X:寄存器的格式
-y:不显示标志,显示RSS和地址(与 -l 一起使用)
--context:显示安全上下文(用于SELinux)
--headers:重复标题行,每页一个
--no-headers:不打印页眉吗
--cols, --columns, --width <num>:设定屏幕宽度
--rows, --lines <num>:设定屏高
显示读
H:就好像它们是过程一样
-L:可能有LWP和NLWP列
-m:后过程
-T:可能与SPID列
其他选项
-c:使用-l选项显示调度类
c:显示真实命令名
e:命令后显示环境
k:指定排序顺序为: [+|-]key[,[+|-]key[,...]]
L:显示格式说明符
n:显示数值uid和wchan
S:累积包括一些死子进程数据
-y:不显示标志,显示RSS(只使用-l)
-w:无限输出宽度
--help <s|l|o|t|m|a>:显示帮助
OBSOLETE 排序键
注意:--sort仅支持部分排序
【命令示例】
ps aux --sort=[排序列名] #默认升序
ps aux --sort=+[排序列名] #升序
ps aux --sort=-[排序列名] #降序
【列名解释】
%cpu cpu利用率
pcpu cpu利用率
priority 内核调度优先级
%mem 物理内存使用率
vsize 虚拟机总大小(KB)
rss 常驻集大小
resident 居民页面
size 内存大小(单位:千字节)
share 页面的共享量
user 用户名
cutime 用户累计时间
cstime 系统累计时间
utime 用户时间
start_time 启动时间进程
session 会话ID
pid 进程ID
ppid 父进程ID
uid 用户标识号
pgrp 进程组ID
tpgid 控制tty进程组ID
min_flt 页面轻微故障个数
maj_flt 页面重大错误个数
cmin_flt 累积页面次要故障
cmaj_flt 累积重大页面故障
cmd 可执行文件的简单名称
flags 表示长格式的f字段
tty 控制tty的设备号
2. 推荐用法
2.1. 标准语法
ps -e
ps -ef
ps -eF
ps -ely
PID :进程ID
PPID :父进程ID
PRI :流程的优先级。数字越高,优先级越低
NI :nice值,-20到19(负数表示优先级高,正数表示优先级低)
PSR :进程当前被分配给的处理器
RSS :常驻集大小,任务使用的非交换物理内存(单位:千字节)
C :处理器利用率
TIME :累积CPU时间,用户+系统
CMD :命令
S :最小状态显示(一个字符)
SZ :大小在物理页面的核心映像进程中
TTY :控制tty(终端)
WCHAN:进程处于休眠状态的内核函数名称,如果进程正在运行,则用“-”;如果进程处于休眠状态,则用“*”
2.2. BSD语法
ps ax
ps axu
USER :当前进程所属用户
PID :进程ID
%CPU :进程自最近一次刷新以来所占用的CPU时间和总时间的百分比
%MEM :进程使用内存的百分比
VSZ :进程使用的虚拟内存大小(单位:KB)
RSS :驻留空间的大小(单位:KB)
TTY :进程相关的终端
START :进程启动日期(若当天启动则显示时间)
TIME :进程使用的总CPU时间
COMMAND:被执行的命令行
STAT :进程状态(
D:不间断睡眠(通常是IO)
R:正在运行或可运行(在运行队列上)
S:可中断睡眠(等待事件完成)
T:被作业控制信号停止
t:在跟踪期间被调试器停止
Z:僵尸进程(被父进程终止但未被收割)
W:进入内存交换(从内核2.6开始无效)
X:死掉的进程
BSD格式额外的字符:
<:高优先级(对其他用户不好)
N:低优先级(对其他用户友好)
L:将页面锁定在内存中(用于实时和自定义IO)
s:是会话领导者
l:是多线程的(使用CLONE_THREAD,像NPTL pthreads一样)
+:在前台进程组中
)
2.3. 打印进程树
ps -ejH
ps axjf
PID :进程ID
PPID :父进程ID
SID :会话ID
STAT :多字符进程状态
TIME :累积CPU时间,用户+系统
CMD :命令
COMMAND:被执行的命令行
TTY :控制tty(终端)
PGID :进程组ID或进程组组长的进程ID
TPGID :进程所连接的tty(终端)上的前台进程组ID,如果进程为-1,则为-1
2.4. 获取有关线程的信息
ps -eLf
ps axms
PID :进程ID
PPID :父进程ID
C :处理器利用率
TIME :累积CPU时间,用户+系统
LWP :轻量级进程(线程)可调度实体的ID(别名spid, tid)
NLWP :进程中的LWPS(线程)数
CMD :命令
COMMAND:命令名称(仅为可执行名称)
CAUGHT :捕获信号的掩码
BLOCKED:阻塞信号的掩码
IGNORED:忽略信号的掩码
PENDING:挂起信号的掩码
TTY :控制tty(终端)
STAT :多字符进程状态(
<:高优先级(对其他用户不好)
N:低优先级(对其他用户友好)
L:将页面锁定在内存中(用于实时和自定义IO)
s:是会话领导者
l:是多线程的(使用CLONE_THREAD,像NPTL pthreads一样)
+:在前台进程组中
)
2.5. 获取安全信息
ps -eo euser,ruser,suser,fuser,f,label,args
ps axZ
ps -eM
PID :进程ID
EUSER :生效用户名
RUSER :真实用户ID
SUSER :保存的用户名
FUSER :文件系统访问用户ID
F :与进程关联的标志
TIME :累积CPU时间,用户+系统
CMD :命令
COMMAND:进程命令+参数
LABEL :安全标签,最常用于SELinux上下文数据
TTY :控制tty(终端)
STAT :多字符进程状态
2.6. 自定义输出格式
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan
【代码】 【显示头】 【解释说明】
args COMMAND 进程命令+参数
bsdstart START 命令启动的时间
start_time START 流程的开始时间或日期
start STARTED 命令开始执行的时间
etime ELAPSED 自进程启动以来经过的时间
cmd CMD 命令
comm COMMAND 命令名称(仅为可执行名称)
%cpu %CPU 进程的cpu使用率
pcpu %CPU 进程的cpu使用率
cputime TIME 累积CPU时间,用户+系统
time TIME 累积CPU时间,用户+系统
nlwp NLWP 进程中的LWPS(线程)数
c C 处理器利用率
class CLS 进程的调度类
cp CP 每单位(百分之十)CPU使用率
f F 与进程关联的标志
thcount THCNT 进程拥有的内核线程数
sched SCH 进程调度策略(SCHED_OTHER (SCHED_NORMAL)、SCHED_FIFO、SCHED_RRSCHED_BATCH、“SCHED_ISO”、“SCHED_IDLE”和“SCHED_DEADLINE”分别显示为0、1、2、3、4、5和6)
lsession SESSION 进程的登录会话标识符
tgid TGID 表示任务所属的线程组的数字
thcgr THCGR 显示线程所属的控制组
unit UNIT 显示进程所属的单元
psr PSR 进程当前被分配给的处理器
sgi_p P 进程当前正在其上执行的处理器。如果进程当前未运行,则显示 *
slice SLICE 显示进程所属的片单元
stat STAT 多字符进程状态
policy POL 进程的调度类
- 没有报告
TS SCHED_OTHER
FF SCHED_FIFO
RR SCHED_RR
B SCHED_BATCH
ISO SCHED_ISO
IDL SCHED_IDLE
DLN SCHED_DEADLINE
? 未知价值
%mem %MEM 进程的常驻集大小与机器上物理内存的mem之比,以百分比表示
pmem %MEM 进程的常驻集大小与机器上物理内存的mem之比,以百分比表示
size SIZE 如果进程对所有可写页面进行脏化,然后再进行脏化,则大约需要多少交换空间换出(这个数字非常粗略)
rss RSS 常驻集大小,任务使用的非交换物理内存(单位:千字节)
sz SZ 大小在物理页面的核心映像进程中。这包括文本、数据和堆栈空间。设备映射目前被排除在外;这是有可能改变的
trs TRS 文本常驻集大小,即用于可执行代码的物理内存量
vsz VSZ 进程的虚拟内存大小(1024字节为单位),目前不包括设备映射
drs DRS 数据驻留集大小,即用于除可执行代码以外的物理内存的数量
maj_flt MAJFLT 此进程中发生的主要页面错误的数目
min_flt MINFLT 此进程中发生的主要页面错误的数目
ni NI nice值,-20到19(负数表示优先级高,正数表示优先级低)
nice NI nice值,-20到19(负数表示优先级高,正数表示优先级低)
nwchan WCHAN 进程处于睡眠状态的内核函数的地址(如果需要内核函数名,请使用wchan)
s S 最小状态显示(一个字符)
pri PRI 流程的优先级。数字越高,优先级越低。
rtprio RTPRIO 实时优先级
wchan WCHAN 进程处于休眠状态的内核函数名称,如果进程正在运行,则用“-”;如果进程处于休眠状态,则用“*”。进程是多线程的,ps不显示线程
euser EUSER 生效用户名
suser SUSER 保存的用户名
cgroup CGROUP 显示进程所属的控制组
ouid OWNER 进程会话所有者的Unix用户标识符
rgroup RGROUP 真实组名
sgroup SGROUP 保存的组名
supgrp SUPGRP 补充组的组名
uunit UUNIT 显示进程所属的用户单元
group GROUP egroup
pid PID 进程ID
ppid PPID 父进程ID
sid SID 会话ID
sess SESS 会话ID或会话领导者的进程ID
luid LUID 显示与进程关联的登录ID
euid EUID 有效的用户ID
ruid RUID 真实用户ID
ruser RUSER 真实用户ID
suid SUID 保存的用户ID(alias svuid)
rgid RGID 真实组ID
pgid PGID 进程组ID或进程组组长的进程ID
egid EGID 进程的有效组ID号
egroup EGROUP 进程的有效组ID
sgid SGID 保存的组ID
supgid SUPGID 补充组的组id
fgid FGID 文件系统访问组ID
fgroup FGROUP 文件系统访问组ID
fuid FUID 文件系统访问用户ID
fuser FUSER 文件系统访问用户ID
lwp LWP 轻量级进程(线程)可调度实体的ID(别名spid, tid)
tid TID 表示可调度实体的唯一编号
ipcns IPCNS 描述进程所属命名空间的唯一inode号
mntns MNTNS 描述进程所属命名空间的唯一inode号
netns NETNS 描述进程所属命名空间的唯一inode号
pidns PIDNS 描述进程所属命名空间的唯一inode号
userns USERNS 描述进程所属命名空间的唯一inode号
utsns UTSNS 描述进程所属命名空间的唯一inode号
gid GID egid
pgrp PGRP pgid
blocked BLOCKED 阻塞信号的掩码(根据字段的宽度,用16进制表示32位或64位掩码显示格式)
caught CAUGHT 捕获信号的掩码
ignored IGNORED 忽略信号的掩码
pending PENDING 挂起信号的掩码
seat SEAT 与分配给特定工作场所的所有硬件设备相关联的标识符
eip EIP 指令指针
esp ESP 堆栈指针
stackp STACKP 进程堆栈底部(开始)的地址
tpgid TPGID 进程所连接的tty(终端)上的前台进程组ID,如果进程为-1,则为-1
tt TT 控制tty(终端)
tty TT 控制终端
tname TTY 控制tty(终端)
label LABEL 安全标签,最常用于SELinux上下文数据
machine MACHINE 分配给VM或容器的进程的机器名
sig PENDING see pending. (alias pending, sig_pend).
sigcatch CAUGHT see caught. (alias caught, sig_catch).
sigignore IGNORED see ignored. (alias ignored, sig_ignore).
sigmask BLOCKED see blocked. (alias blocked, sig_block).
spid SPID see lwp. (alias lwp, tid).
svgid SVGID see sgid. (alias sgid).
svuid SVUID see suid. (alias suid).
ucmd CMD see comm. (alias comm, ucomm).
ucomm COMMAND see comm. (alias comm, ucmd).
uid UID see euid. (alias euid).
user USER see euser. (alias euser, uname).
3. 指定用户
3.1. 指定单个/多个用户
ps u -U root,yt,xxx
3.2. 查看当前用户下进程
ps xl
4. 排序查询
ps aux --sort=[排序列名] #默认升序
ps aux --sort=+[排序列名] #升序
ps aux --sort=-[排序列名] #降序
4.1. 按cpu使用率排序
ps aux --sort=-%cpu
4.2. 按物理内存使用率排序
ps aux --sort=-%mem
4.3. 按虚拟内存使用排序
ps aux --sort=-vsiz
5. 字段说明
5.1. OS命令类
COMMAND 进程命令+参数
START 命令启动的时间
START 流程的开始时间或日期
STARTED 命令开始执行的时间
ELAPSED 自进程启动以来经过的时间
CMD 命令
COMMAND 命令名称(仅为可执行名称)
5.2. CPU类
%CPU 进程的cpu使用率
%CPU 进程的cpu使用率
TIME 累积CPU时间,用户+系统
TIME 累积CPU时间,用户+系统
NLWP 进程中的LWPS(线程)数
C 处理器利用率
CP 每单位(百分之十)CPU使用率
5.3. 进程类
F 与进程关联的标志(1分叉,但没有执行,4使用超级用户权限)
THCNT 进程拥有的内核线程数
SCH 进程调度策略(SCHED_OTHER (SCHED_NORMAL)、SCHED_FIFO、SCHED_RRSCHED_BATCH、“SCHED_ISO”、“SCHED_IDLE”和“SCHED_DEADLINE”分别显示为0、1、2、3、4、5和6)
SESSION 进程的登录会话标识符
TGID 表示任务所属的线程组的数字
THCGR 显示线程所属的控制组
UNIT 显示进程所属的单元
PSR 进程当前被分配给的处理器
P 进程当前正在其上执行的处理器。如果进程当前未运行,则显示 *
SLICE 显示进程所属的片单元
STAT 多字符进程状态
POL 进程的调度类(
- 没有报告
TS SCHED_OTHER
FF SCHED_FIFO
RR SCHED_RR
B SCHED_BATCH
ISO SCHED_ISO
IDL SCHED_IDLE
DLN SCHED_DEADLINE
? 未知价值
)
CLS 进程的调度类(
TS 固定播送时间其他
FF SCHED_FIFO
RR SCHED_RR
B SCHED_BATCH
ISO SCHED_ISO
IDL SCHED_IDLE
DLN SCHED_DEADLINE
? unknown value
)
5.4. 内存类
%MEM 进程的常驻集大小与机器上物理内存的mem之比,以百分比表示
%MEM 进程的常驻集大小与机器上物理内存的mem之比,以百分比表示
SIZE 如果进程对所有可写页面进行脏化,然后再进行脏化,则大约需要多少交换空间换出(这个数字非常粗略)
RSS 常驻集大小,任务使用的非交换物理内存(单位:千字节)
SZ 大小在物理页面的核心映像进程中。这包括文本、数据和堆栈空间。设备映射目前被排除在外;这是有可能改变的
TRS 文本常驻集大小,即用于可执行代码的物理内存量
VSZ 进程的虚拟内存大小(1024字节为单位),目前不包括设备映射
DRS 数据驻留集大小,即用于除可执行代码以外的物理内存的数量
MAJFLT 此进程中发生的主要页面错误的数目
MINFLT 此进程中发生的主要页面错误的数目
5.5. 优先级类
NI nice值,-20到19(负数表示优先级高,正数表示优先级低)
WCHAN 进程处于睡眠状态的内核函数的地址(如果需要内核函数名,请使用wchan)
S 最小状态显示(一个字符)
PRI 流程的优先级。数字越高,优先级越低
RTPRIO 实时优先级
WCHAN 进程处于休眠状态的内核函数名称,如果进程正在运行,则用“-”;如果进程处于休眠状态,则用“*”。进程是多线程的,ps不显示线程
5.6. 用户类
EUSER 生效用户名
SUSER 保存的用户名
CGROUP 显示进程所属的控制组
OWNER 进程会话所有者的Unix用户标识符
RGROUP 真实组名
SGROUP 保存的组名
SUPGRP 补充组的组名
UUNIT 显示进程所属的用户单元
5.7. ID类
PID 进程ID
PPID 父进程ID
SID 会话ID
SESS 会话ID或会话领导者的进程ID
LUID 显示与进程关联的登录ID
EUID 有效的用户ID
RUID 真实用户ID
RUSER 真实用户ID
SUID 保存的用户ID(alias svuid)
RGID 真实组ID
PGID 进程组ID或进程组组长的进程ID
EGID 进程的有效组ID号
EGROUP 进程的有效组ID
SGID 保存的组ID
SUPGID 补充组的组id
FGID 文件系统访问组ID
FGROUP 文件系统访问组ID
FUID 文件系统访问用户ID
FUSER 文件系统访问用户ID
LWP 轻量级进程(线程)可调度实体的ID(别名spid, tid)
TID 表示可调度实体的唯一编号
IPCNS 描述进程所属命名空间的唯一inode号
MNTNS 描述进程所属命名空间的唯一inode号
NETNS 描述进程所属命名空间的唯一inode号
PIDNS 描述进程所属命名空间的唯一inode号
USERNS 描述进程所属命名空间的唯一inode号
UTSNS 描述进程所属命名空间的唯一inode号
5.8. 掩码类
BLOCKED 阻塞信号的掩码(根据字段的宽度,用16进制表示32位或64位掩码显示格式)
CAUGHT 捕获信号的掩码
IGNORED 忽略信号的掩码
PENDING 挂起信号的掩码
SEAT 与分配给特定工作场所的所有硬件设备相关联的标识符
5.9. 指针类
EIP 指令指针
ESP 堆栈指针
STACKP 进程堆栈底部(开始)的地址
5.10. 终端类
TPGID 进程所连接的tty(终端)上的前台进程组ID,如果进程为-1,则为-1
TT 控制tty(终端)
TT 控制终端
TTY 控制tty(终端)
LABEL 安全标签,最常用于SELinux上下文数据
MACHINE 分配给VM或容器的进程的机器名