ps - 展示当前进程的信息;以列表呈现
ps [选项]
ps 展示关于运行的进程的信息。如果你想要让这个信息实时更新;请用top。
这个版本的ps接收几种选项;
1 UNIX选项;必须使用;-;
2 BSD选项;必须不能使用;-;
3 GNU长选项;使用;--;
注意;ps -aux 和 ps aux 不同。 POSIX 和 UNIX 标准需要 ps -aux 打印所有属于用户x的进程;也打印所有 -a 选项选择的进程。如果用户x不存在;ps可能把这个命令看成ps aux;打印一个警告;warning;。
ps默认选择所有属于相同有效用户ID(euid=EUID)的进程作为当前用户并与调用者同一个终端关联。它展示进程ID;pid=PID;、进程所在的终端;tname=TTY;、[DD-]hh:mm:ss格式的cpu时间和可执行名称;ucmd=CMD;。输出默认不排序。
BSD风格的选项将默认加上进程状态;stat=STAT;;展示命令的变量;args=COMMAND;而不是可执行名称。你可以使用PS_FORMAT环境变量覆盖这个。使用BSD风格的选项也会包括你拥有的其他终端;TTYs;的进程;这个也可以描述为;不展示其他用户和其他终端的进程。当选项在下面描述为“相同”时;不考虑这些影响;因此-M将被视为与Z相同;依此类推。
除下文所述外;进程选择选项是附加的。放弃默认选择;然后将所选进程添加到要显示的进程集。因此;如果进程符合任何给定的选择标准;则将显示该进程。
选择除了满足特定条件;否定选择;的所有进程。等于 -N。
-e选择所有进程。等于 -A。g所有;包括会话领导。这个选项时过时的;以后的版本可能会取消。-N选择除了满足特定条件;否定选择;的所有进程。等于 --deselect。
T选择所有跟当前终端有关的进程。等于没有任何参数的 t 。r只选择正在运行的进程。x解除 BSD 风格的“必须有一个 tty”限制;当使用某些 BSD 风格;不带“-”;选项或 ps 个性设置类似于 BSD 时;该限制强加于所有进程的集合。 以这种方式选择的进程集是通过其他方式选择的进程集的补充。 另一种描述是该选项使 ps 列出您拥有的所有进程;与 ps 相同的 EUID;;或者在与 a 选项一起使用时列出所有进程。这些选项接收一个空格分隔的列表或逗号分割的列表为参数。列表可以多次使用。
例如;ps -p ;1 2; -p 3,4
-123 等于 --pid 123
123 等于 --pid 123
-C cmdlist(命令列表)
选择cmdlist中的命令。注意;命令名不等于命令行。以前的procps版本和内核把命令名 的长度限制在15字符之内。现在这个限制解除了。
-G grplist(组列表)
根据真实组ID(RGID)或组名称选择。真实组ID确定了创建进程的用户所属的组。
-g grplist
根据会话或有效组名来选择。根据会话选择有多重标准;但根据有有效组名是使用一些 其他操作系统也在用的逻辑方法。当列表内容都是数字时;ps会根据会话选择。只有在 一些组名也被指定时;组ID数字才会起作用。参考 -s 和 --group。
--Group grplist
等于 -G。
--group grplist
根据有效组ID(EGID)或组名来选择。这个选项会选择那些有效组名或ID在grplist的进 程。有效组名描述了文件权限被进程使用的组。-g 经常等同于 --group。
p pidlist(进程ID列表)
根据进程ID选择。等于 -p 和 --pid。
-p pidlist
等于 p 和 --pid。
--pid pidlist
等于 p 和 -p。
--ppid pidlist
根据父进程的进程ID选择。
q pidlist
根据进程ID选择;快速模式;。等于 -q 和 --quick-pid。
-q pidlist
ps只读取pidlist中的pid的必要信息;而不会使用额外的筛选规则。pid是无序的。 等于 q 和 --quick-pid。
--quick-pid pidlist
等于q 和 -q。
-s sesslist(会话列表)
根据会话ID选择。
--sid sesslist
等于 -s。
t ttylist
根据tty选择。几乎等于 -t 和 --tty;但是也能使用空的tty列表指定ps关联的终端。当tty 列表为空时;使用T选项是比t更简洁的。
-t ttylist
根据tty选择。终端;tty或文本输出的屏幕;可以使用一下格式;/dev/ttyS1;ttyS1; S1。;-;可以用于选择没有附属于任何终端的进程。
--tty ttylist
根据终端选择。等于 -t 和 t。
U userlist
根据有效用户ID;EUID;或用户名选择。有效用户ID描述了文件权限被进程使用的用户。
等于 -u 和 --user。
-U userlist
根据真实用户ID(RUID)或用户名选择。真实用户ID指的是创建进程的用户。
-u userlist
等于 U 和 --user。
--User userlist
根据真实用户ID(RUID)或用户名选择。等于 -U。
--user userlist
等于 -u 和 U。
这些选项是用来选择ps展示的信息。
-c 展示 -l 选项的不同调度器信息。
--context
展示安全上下文格式;SELinux;
-f 以完整格式列出。这个选项可以和其他多种UNIX风格的选项加到一起;展示多个列。 也会打印出命令参数。使用 -L 时;NLWP(线程数)和LWP(线程ID)列也会展示出来。
-F 额外的完整格式。
--format format
用户自定义格式。等于 -o 和 o。
j BSD脚本控制格式
-j 脚本格式。
l 展示长BSD格式。
-l 长格式。-y 选项经常一起用。
-M 添加一列安全数据。等于Z(SELinux)
O format
预装了o;超载;。BSD O 选项可以呈现 -O 的效果;使用一些普通字段预定义的用 户自定义输出格式;或者可以用来排序。试探法用于确定此选项的行为。 为确保获得 所需的行为;排序或格式化;;请以其他方式指定选项;例如使用 -O 或 --sort;。 当用作格式化选项时;它与 -O 相同;具有 BSD 特性。
-O format
类似 -o;但是使用一些默认列预装了。等于 -o pid,format,state,tname,time,command 或 -o pid,format,tname,time,cmd。
o format
等于 -o ;--format
-o format
用户自定义的格式。format是一个空格分隔或逗号分隔的列表;提供了创建输出列的 方法。可识别的关键词在下边的标准格式说明符中展示。表头可能按照意愿进行重命 名;ps -o pid,ruser=RealUser -o comm=Command;。如果所有列名都是空的 ;ps -o pid= -o comm=;;那么列名这一行不会被展示。比较宽的列名的列宽度将会 增加;这个可以用来增加列宽;比如WCHAN;ps -o pid,wchan=WIDE-WCHAN- COLUMN -o comm;。显式宽度控制;ps opid,wchan:42,cmd;也是提供的。 ps -o pid=X,comm=Y 的行为因人而异;输出可能是“X,comm=Y”的一列或者“X”和“Y” 的两列。不确定时使用多个 -o 选项。使用环境变量PS_FORMAT指定一个默认值; DefSysV和DefBSD是可以用来选择默认UNIX和BSD列的宏。
s 展示信号格式。
u 展示面向用户的格式
v 展示虚拟内存格式
X 注册器格式
-y 不展示标志;flags;;在addr(地址)栏展示rss。这个选项只能跟 -l 一起用。
Z 添加一个安全数据列。等于 -M;SELinux;
c 展示真实命令名称。这个是源自执行文件的名称;而不是argv值。命令参数和任何对 它的修改不会被展示。这个选项有效地把args格式关键词改成comm格式关键词;这 对 -f format 选项和各种 BSD风格的格式选项有效;因为这些默认是展示命令参数 的。参考 -f 选项;格式关键词args;格式关键词comm。
--cols n
设置屏幕宽度。
--columns n
设置屏幕宽度。
--cumulative
包括一些被杀掉的子进程数据;作为与父进程的总和;
e 在命令后边展示环境。
f ASCII格式的进程树
--forest
等于 f
h 没有表头。;或者;在BSD风格中;每个屏幕有一个表头;。h 选项是有问题的。标 准BSD ps 使用这个选项在输出的每一页打印表头;但是老版本的Linux ps 使用这个 选项不显示表头。这个版本的 ps 跟Linux一致;不展示表头;除非选择了BSD风格。 不管当前的风格;你可以使用 --headers 和 --no-headers 来在每页打印表头或不打印 表头。
-H 每页展示表头。
k spec
指定排序规则。排序格式是: [;|-]key[,[;|-]key[,...]]。从标准格式说明符选择一个多字 母关键词。“;”是可选的前缀;因为默认顺序是升序或字典顺序。等于 --sort。
例子;ps jaxkuid,-ppid,;pid
ps axk comm o comm,args
ps kstart_time -ef
--lines n
设置屏幕高度。
n WCHAN和USER 用数字格式输出;包括所有类型的UID和GID;
--no-headers
不打印表头。等于 --no-heading。
O order
排序;过载;。BSD O 选项可以呈现 -O 的效果;加上预定义的普通字段的用户自 定义输出格式;或者用来指定排序规则。试探法用于确定此选项的行为。为确保获 得所需的行为;排序或格式化;;请以其他方式指定选项;比如;-O 或 --sort;。
对于排序;过时的 BSD O 选项语法是 O[;|-]k1[,[;|-]k2[,...]] 。它根据由单字母短关 键词 k1、k2、... 的序列指定的多级排序对进程列表进行排序;如下面过时排序关 键词部分所述。“;”现在是可选的;仅仅在关键词上重新迭代默认排序方向;但可能 有助于区分 O 排序和 O 格式。 “-”只在它前面的关键词上反转方向。
--rows n
设置屏幕高度。
S 总和几种信息;比如CPU使用;从被杀掉的子进程到它们的父进程。这个功能可以 有效检查一个系统;在这个系统中父进程不断分支出短时间存在的子进程。
--sort spec
指定排序规则。排序格式是[;|-]key[,[;|-]key[,...]] 。从标准格式说明符选择一个多 字母关键词。“;”是可选的前缀;因为默认顺序是升序或字典顺序。等于 k。例如; ps jax --sort=uid,-ppid,;pid
w 宽输出。使用两次这个命令可以实现无限制宽度。
-w 宽输出。使用两次这个命令可以实现无限制宽度。
--width n
设置屏幕宽度。
H 像进程那样展示线程。
-L 展示线程;可能也会有LWP和NLWP列。
m 在进程后展示线程
-m 在进程后展示线程
-T 展示线程;可能也会有SPID列。
--help section
打印帮助信息。section的值可以是simple、list、output、threads、misc或all。也可 以用缩写;s|l|o|t|m|a。
--info
打印调试信息。
L 列出所有格式说明符。
V 打印procps-ng的版本。
-V 打印procps-ng的版本。
--version
打印procps-ng的版本。
这些是s;stat;state的输出说明符;表头是“STAT”或“S”;。表示一个进程的状态信息。
D不可中断休眠;IO;I(大写i)空闲内核线程R正在运行或可运行;在运行队列;S可中断休眠;等一个时间来完成;T因作业控制信号而停止t在跟踪期间被调试器停止W分页;内核2.6.x版本后无效;X已杀死;应该永远不会看到;Z僵尸进程在使用BSD格式时;stat可能会展示额外的标志;
<高优先级N低优先级L内存有被锁定的页(实时和自定义IO)s是会话领导l(小写L)是多线程的;使用CLONE_THREAD;类似NPTL pthreads;;在前台进程组里这些键由 BSD O 选项使用;当它用于排序时;。 GNU --sort 选项不使用这些键;而是使用下面标准格式说明符部分中描述的说明符。 请注意;排序中使用的值是 ps 使用的内部值;而不是某些输出格式字段中使用的“cooked”值;例如;在 tty 上排序将排序为设备编号;而不是根据显示的终端名称;。 如果要对“cooked”值进行排序;请将 ps 输出通过管道传输到 sort 命令中。
键长版本功能ccmd简单的可执行名称Cpcpucpu使用fflags长格式 F 字段中的标志gpgrp进程组IDGtpgid控制tty进程组IDjcutime累计用户时间Jcstime累计系统时间kutime用户时间mmin_flt次要页面错误的数量Mmaj_flt主要页面错误的数量ncmin_flt累计次要页面错误Ncmaj_flt累计主要页面错误osession会话IDppid进程IDPppid父进程IDrrss常驻集大小Rresident常驻页面ssize以kb为单位的内存大小Sshare共享页面数量ttty控制的tty的设备数量Tstart_time进程启动的时间Uuid用户IDuuser用户名vvsizeKiB为单位的虚拟内存总大小ypriority内核调度优先级ps支持AIX格式描述符。类似printf命令的格式。例如;ps -eo %p %y %x %c;。
代码参数名表头%Cpcpu%CPU%GgroupGROUP%PppidPPID%UuserUSER%aargsCOMMAND%ccommCOMMAND%grgroupRGROUP%nniceNI%ppidPID%rpgidPGID%tetimeELAPSED%uruserRUSER%xtimeTIME%yttyTTY%zvszVSZ这里是用于控制输出格式;例如;使用 -o 选项;或者用GNU风格的 --sort 对选择的进程进行排序。例如;ps -eo pid,user,args --sort user
这些用户定义的格式描述符可能包括空格;args;cmd;comm;command;fname;ucmd;ucomm;lstart;bsdstart;start。
一些关键词可能不能用来排序。
代码表头功能%cpu%CPU以“##.#”为格式的进程cpu使用情况。是一个百分数;但不显示%。%mem%MEM当前使用的内存的百分比。argsCOMMAND完整的命令。可能包括空格。一个标记为<defunct>的进程已经部分杀掉了;等待父进程将它完全杀掉。如果这个描述符出现在最后;这个列会延长到屏幕最右边。环境变量 COLUMNS 或 --cols 选项可以用来决定宽度。w 或 -w 选项也可以调整宽度。blockedBLOCKED被屏蔽的信号。bsdstartSTART命令被执行的时间。如果是24小时之内执行的;输出格式是“ HH:MM”;否则就是“ Mmm:SS”;Mmm是三位数的月份。bsdtimeTIME累计的cpu时间;用户;系统。格式是“MMM:SS”。cC处理器使用。百分数。caughtCAUGHT捕捉的信号。cgnameCGNAME进程属于的控制组的名称。cgroupCGROUP进程属于的控制组。classCLS进程的调度级别。可能的值有;
- 没有上报
TS SCHED_OTHER
FF SCHED_FIFO
RR SCHED_RR
B SCHED_BATCH
ISO SCHED_ISO
IDL SCHED_IDLE
DLN SCHED_DEADLINE
? 不能识别的值
clsCLS等于class。cmdCMD等于args。commCOMMAND等于args。commandCOMMAND等于args。cpCP十分之一为单位的cpu使用率。cputimeTIME累计cpu时间。“[DD-]hh:mm:ss”。cputimesTIME秒为单位的累计cpu时间。drsDRS数据驻留集大小;专用于可执行代码以外的物理内存量。egidEGID进程的有效组ID数量。egroupEGROUP进程的有效组ID。eipEIP指令指针。espESP栈指针。etimeELAPSED进程持续时间;[[DD-]hh:]mm:ss。etimesELAPSED以秒为单位的进程持续时间。euidEUID有效用户ID。euserEUSER有效用户名。应该是文字的;如果宽度允许可以是十进制数字。fF进程的标志。参考上边的进程状态标志部分。fgidFGID文件系统访问组ID。fgroupFGROUP文件系统访问组ID。应该是文字的;如果宽度允许可以是十进制数字。flagF等于f。flagsF等于f。fnameCOMMAND进程可执行文件名的前8个字节。fuidFUID文件系统访问用户ID。别名是fsuid。fuserFUSER文件系统访问用户ID。应该是文字的;如果宽度允许可以是十进制数字。gidGID等于egid。groupGROUP等于egroup。ignoredIGNORED被忽略的信号。ipcnsIPCNS描述进程属于的命名空间的唯一inode数。labelLABEL安全标志;更普遍用于SELinux上下文数据。这是用于高安全性系统的强制访问控制。lstartSTARTED等于bsdstart。lsessionSESSION如果包括了systemd支持;展示进程的登录会话描述符。luidLUID展示进程的登录ID。lwpLWP可调度实体的轻量进程;线程;ID。lxcLXC任务运行所在的lxc容器的名称。如果进程没有在容器内运行;显示‘-’。machineMACHINE如果包含 systemd 支持;则显示分配给 VM 或容器的进程的机器名称。maj_fltMAJFLT发生在这个进程的主要页面错误的数量。min_fltMINFLT发生在这个进程的次要页面错误的数量。mntnsMNTNS等于ipcns。netnsNETNS等于ipcns。niNI优先级值。范围从19;最高;到-20;最低;。niceNI等于ni。nlwpNLWP进程中 lwp;线程;的数量。numaNUMA最近使用的处理器的节点。-1意味着NUMA信息获取不到。nwchanWCHAN进程休眠的内核函数地址。如果想要内核函数名;使用wchan。运行的任务显示为‘-’。ouidOWNER如果包括了systemd支持;展示进程的会话的所有者的Unix用户描述符。pcpu%CPU等于%cpu。pendingPENDING待办的信号。进程的待办信号不同于单个线程的待办信号。pgidPGID进程组ID;或者进程组领导的进程ID。pgrpPGRP等于pgid。pidPID进程ID。piDNSPIDNS等于ipcns。pmem%MEM等于%mem。policyPOL等于class。ppidPPID父进程ID。priPRI进程优先级。数字越大;优先级越低。psrPSR进程被分配的处理器。rgidRGID真实组ID。rgroupRGROUP真实组名。应该是文字的;如果宽度允许可以是十进制数字。rssRSS常驻集大小;任务已使用的非交换物理内存;以kb为单位;。rssizeRSS等于rss。rszRSZ等于rss。rtprioRTPRIO真实时间优先级。ruidRUID真实用户ID。ruserRUSER真实用户ID。应该是文字的;如果宽度允许可以是十进制数字。sS展示最小状态;一个字符;。参考进程状态标志。schedSCH进程的调度策略。
SCHED_OTHER (SCHED_NORMAL)、SCHED_FIFO、SCHED_RR、SCHED_BATCH、SCHED_ISO、SCHED_IDLE 和 SCHED_DEADLINE 分别对应 0、1、2、3、4、5和6。
seatSEAT如果包括了systemd支持;展示与分配给特定工作区的硬件设备有关的描述符。sessSESS会话ID;或者会话领导的会话ID。别名session。sgi_pP进程当前执行所在的处理器。如果进程没有运行或不可运行;展示“*”。sgidSGID保存的组ID。sgroupSGROUP保存的组ID。应该是文字的;如果宽度允许可以是十进制数字。sidSID等于sess。sigPENDING等于pending。sigcatchCAUGHT等于caught。sigignoreIGNORED等于ignored。sigmaskBLOCKED等于blocked。sizeSIZE如果进程要弄脏所有可写页面然后被换出;大约需要的交换空间量。 这个数字很粗糙;sliceSLICE如果包括了systemd支持;展示进程属于的切片单元。spidSPID等于lwp。stackpSTACKP进程的栈的底;开始;的地址。startSTARTED等于bsdstart。start_timeSTART等于bsdstart。statSTAT多字符的进程状态。参考进程状态标志。stateS等于s。suidSUID保存的用户ID。supgidSUPGID补充组的组ID。supgrpSUPGRP补充组的组名称。suserSUSER保存的用户名。应该是文字的;如果宽度允许可以是十进制数字。svgidSVGID等于sgid。svuidSVUID等于suid。szSZ进程核心映像的物理页大小。这包括文本、数据和堆栈空间。设备映射当前被排除。tgidTGID用数字表示任务属于的线程组。是线程组领导的进程ID。thcountTHCNT等于nlwp。tidTID等于lwp。timeTIME等于cputime。timesTIME等于cputimes。tnameTTY控制tty;终端;。tpgidTPGID进程连接到的 tty;终端;上的前台进程组的 ID;如果进程未连接到 tty;则为 -1。trsTRS专用于可执行代码的文本驻留集大小、物理内存数量。ttTT等于tname。ttyTT等于tname。ucmdCMD等于comm。ucommCOMMAND等于comm。uidUID等于euid。unameUSER等于euser。unitUNIT如果包括了systemd支持;展示进程属于的单位。userUSER等于euser。usernsUSERNS等于ipcns。utsnsUTSNS等于ipcns。uunitUUNIT如果包括了systemd支持;展示进程属于的用户单位。vsizeVSZ等于vsz。vszVSZ已KiB为单位的进程的虚拟内存大小。设备映射当前被排除。wchanWCHAN进程休眠的内核函数地址。运行的任务显示为‘-’。如果ps没有展示线程;多线程的进程显示为‘*’。这些环境变量可以影响ps;
COLUMNS
覆盖默认展示宽度。
LINES
覆盖默认展示高度。
PS_PERSONALITY
设置为posix、old、linux、bsd、sun、digital等;参考下边的特性。
CMD_ENV
设置为posix、old、linux、bsd、sun、digital等;参考下边的特性。
I_WANT_A_BROKEN_PS
强制过时的命令行解释。
LC_TIME
日期格式。
PS_COLORS
当前不支持。
PS_FORMAT
覆盖默认输出格式。可以使用 -o 选项设置。DefSysV 和 DefBSD 是有用的。
POSIXLY_CORRECT
不要找借口忽略不好的特性。
POSIX2
设置为开启时;和POSIXLY_CORRECT一样效果。
UNIX95
不要找借口忽略不好的特性。
_XPG
取消CMD_ENV=irix 不标准的行为。
一般来说;设置这些环境变量不是好主意。唯一的例外是 CMD_ENV 或 PS_PERSONALITY;可以设置为 Linux 作为普通系统。如果不这么做;ps 会使用不好的、没用的 Unix98 标准。
390 类似OS/390 开放版本 ps
aix 类似AIX ps
bsd 类似FreeBSD ps (完全非标准)
compaq 类似 Digital Unix ps
debian 类似旧的 Debian ps
digital 类似 Tru64 (以前是 Digital Unix, OSF/1) ps
gnu 类似旧的 Debian ps
hp 类似 HP-UX ps
hpux 类似 HP-UX ps
irix 类似 Irix ps
linux 推荐
old 类似原始 Linux ps;完全非标准;
os390 类似 OS/390 开放版本 ps
posix 标准
s390 类似 OS/390 开放版本 ps
sco 类似 SCO ps
sgi 类似Irix ps
solaris2 类似 Solaris 2; (SunOS 5) ps
sunos4 类似 SunOS 4 ;Solaris 1;ps
svr4 标准
sysv 标准
tru64 类似 Tru64(以前是 Digital Unix, OSF/1) ps
unix 标准
unix95 标准
unix98 标准