Linux命令_ps & 进程管理

简介

        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. 基本参数

1.2. 指定型参数

1.3. 指定排序

1.4. 指定输出格式

2. 推荐用法

2.1. 标准语法

2.2. BSD语法

2.3. 打印进程树

2.4. 获取有关线程的信息

2.5. 获取安全信息

2.6. 自定义输出格式

3. 强制指定

3.1. 指定某个用户

3.2. 指定某个PID

3.3. 指定某个进程名 

4. 排序查询 

4.1. 按cpu使用率排序

4.2. 按物理内存使用率排序

4.3. 按虚拟内存使用排序

4.4. 按进程数排序

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  [选项]

#详细分解
ps  [进程选择] [格式输出]
ps  [进程选择] [自定义格式]
ps  [指定排序] [格式输出]
ps  [指定用户] [格式输出]

 

1.1. 基本参数

-A:所有进程
-e:所有进程
-a:都使用tty,除了会话引导符
-d:除会议负责人外
-N:取消选择否定选择
 a:都使用tty,包括其他用户
 r:只运行进程
 T:该终端上的所有进程
 x:进程而不控制ttys

  

1.2. 指定型参数

-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

 

1.3. 指定排序

--sort 和 k 参数作用一样

注意:排序仅支持部分排序

【命令示例】
ps aux --sort=[排序列名]     #默认升序
ps aux --sort=+[排序列名]   #升序
ps aux --sort=-[排序列名]    #降序

ps aux k -[排序列名]           #降序

【列名解释】
%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的设备号

 

1.4. 指定输出格式

-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:显示CLS列(加上-l选项显示调度类)
 c:显示真实命令名
 e:COMMAND列为 命令+环境变量
 k:指定排序(与--sort一样,+代表升序,-代表降序)
 L:显示格式说明符
 n:显示数值uid和wchan
 S:累积包括一些死子进程数据
-y:不显示标志,显示RSS(只使用-l)
-w:无限输出宽度
--help <s|l|o|t|m|a>:显示帮助

 

 

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

 

指定当前用户 

ps xl

 

 

3.2. 指定某个PID

指定PID

ps -q [PID1],[PID2] aux

ps -q [PID1],[PID2] -o user,pid,ppid,ni,%cpu,%mem,vsz,start,time,args

 

指定PPID

ps --ppid [PID1],[PID2] u

ps --ppid [PPID] -o user,pid,ppid,ni,%cpu,%mem,vsz,start,time,args

 

查看包含pid和ppid的进程(使用grep)

ps -ef |grep [PID] |grep -v grep

 

 

3.3. 指定某个进程名 

ps u -C [进程名]

 

 

 

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

 

 

4.4. 按进程数排序

ps -efL k -nlwp

 

 

 

5. 字段说明

5.1. OS命令类

COMMAND     进程命令+参数
START       命令启动的时间
START       流程的开始时间或日期
STARTED     命令开始执行的时间
ELAPSED     自进程启动以来经过的时间
CMD         命令
COMMAND     命令名称(仅为可执行名称)

 

 

5.2. CPU类

%CPU        进程的cpu使用率
TIME        累积CPU时间,用户+系统
C           处理器利用率
CP          每单位(百分之十)CPU使用率

 

 

5.3. 进程类

F           与进程关联的标志(1分叉,但没有执行,4使用超级用户权限)
LWP         轻量级进程(线程)可调度实体的ID(别名spid, tid)
NLWP        进程中的LWPS(线程)数
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或容器的进程的机器名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值