资讯

展开

linux-命令:ps-详解

作者:快盘下载 人气:

 

名称

        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相同;依此类推。

除下文所述外;进程选择选项是附加的。放弃默认选择;然后将所选进程添加到要显示的进程集。因此;如果进程符合任何给定的选择标准;则将显示该进程。

例子

用标准格式展示系统中的每个进程;

        ps -e

linux-命令:ps-详解

        ps -ef

ps

        ps -eF

linux

        ps -ely

linux

用BSD格式展示系统中的每个进程;

        ps ax

linux

        ps aux

ps

展示进程树;

        ps -ejH

ps

ps

        ps axjf

ps

ps

得到线程信息;

        ps -eLf

ps

linux

        ps axms

linux

得到安全信息;

        ps -eo euser,ruser,suser,fuser,f,comm,label

ps

        ps axZ

ps

        ps -eM

linux

用用户格式展示root用户运行的进程;

        ps -U root -u root u

ps

用用户定义格式展示每个进程;

        ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm

linux

        ps -Ao pid,tt,user,fname,tmout,f,wchan

linux

只打印rsyslogd的进程ID;

        ps -C rsyslogd -o pid=

linux

只打印进程ID是21的进程名;

        ps -q 42 -o comm=

linux

下边是各种参数的用法

简单进程选项

a解除 BSD 风格的“只有你自己”限制;当使用某些 BSD 风格;没有“-”;选项或 ps 个性设置类似于 BSD 时;该限制强加于所有进程的集合。 以这种方式选择的进程集是通过其他方式选择的进程集的补充。 另一种描述是这个选项会导致 ps 列出所有带有终端 (tty) 的进程;或者与 x 选项一起使用时列出所有进程。-A选择所有进程;等于 -e。-a选择除了会话领导和与终端无关的进程以外的所有进程。-d选择除了会话领导以外的所有进程。--deselect

选择除了满足特定条件;否定选择;的所有进程。等于 -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内核调度优先级

AIX 格式描述符

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              标准

加载全部内容

相关教程
猜你喜欢
用户评论
快盘暂不提供评论功能!