man 1 ps 翻译和补充

名称
        ps-报告当前进程的快照。

概要
        ps [选项]


描述
        ps显示选择的活动进程信息。 如果要重复更新所选内容和显示的信息,请改用top(1)。

        此版本的ps接受几种选择:

        1 UNIX选项,可以分组,并且必须在破折号之前。
        2个BSD选项,可以分组,并且不能带破折号。
        3个GNU长选项,前面带有两个破折号。

        可以随意混合使用不同类型的选项,但是可能会出现冲突。 由于该ps兼容的许多标准和ps实现,因此存在一些功能上相同的同义词选项。

        请注意,"ps -aux""ps aux" 不同。 POSIX和UNIX标准要求 "ps -aux" 打印名为“x”的用户拥有的所有进程,以及打印将由-a选项选择 ##############
        的所有进程。 如果不存在名为“x”的用户,则此ps可能会将命令解释为“ps aux”,并显示警告。 此行为旨在帮助过渡旧的脚本和习惯。 
        它很脆弱,随时可能更改,因此不应依赖。

        缺省情况下,ps选择所有与当前用户具有相同有效用户ID(euid = EUID)且与调用者位于同一终端关联的进程。 它显示进程ID(pid = PID),
        与进程关联的终端(tname = TTY),以[DD-] hh:mm:ss格式(time = TIME)累积的CPU时间和可执行文件名称(ucmd = CMD)。 默认情况下,
        输出未排序。

        使用BSD样式的选项会将进程状态(stat = STAT)添加到默认显示,并显示命令args(args = COMMAND)而不是可执行文件名。 
        您可以使用PS_FORMAT环境变量来覆盖它。 使用BSD样式的选项还将更改过程选择,以包括您拥有的其他终端(TTY)上的过程; 
        替代地,这可以被描述为将选择设置为被过滤以排除其他用户拥有的或不在终端上的进程的所有进程的集合。 当以下将选项描
        述为“相同”时,不会考虑这些效果,因此-M将被视为与Z相同,依此类推。

        除下述内容外,过程选择选项是可加的。 默认选择将被放弃,然后将选定的进程添加到要显示的进程集中。 如果一个进程满足任何给
        定的选择标准,将被显示。

例子
       要使用查看系统上的每个进程的标准语法:
          ps -e
          ps -ef
          ps -eF
          ps -ely

       要使用BSD语法查看系统上的每个进程:
          ps ax
          ps axu

       要打印进程树:
          ps -ejH
          ps axjf //更友好一些

       获取线程有关的信息:
          ps -eLf
          ps axms

       获取安全信息:
          ps -eo euser,ruser,suser,fuser,f,comm,label
          ps axZ
          ps -eM

       要以用户格式查看以root身份运行的每个进程(真实和有效ID),请执行以下操作:
          ps -U root -u root u

       要以用户定义的格式查看每个进程:
          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

       仅打印syslogd的进程ID:
          ps -C syslogd -o pid =

       仅打印PID 42的名称:
          ps -p 42 -o comm =

简单的过程选择
       a 解除BSD样式的“仅您自己”限制,该限制在以下情况下强加于所有进程的集合
         某些BSD样式(不带“-”)选项或ps个性设置类似于BSD时使用。套装
         除了通过其他方式选择的过程集合之外,以这种方式选择的过程集合中的一个。
         另一种描述是,此选项使ps列出带有终端(tty)的所有进程,或者
         列出与x选项一起使用时的所有进程。

       -A 选择所有进程。与-e相同。

       -a 选择除会话领导者(请参阅getsid(2))和与某个进程不相关的进程以外的所有进程终奌站。

       -d 选择除会话领导者以外的所有进程。

       --deselect
          选择除满足指定条件的所有过程外的所有过程(取消选择)。与-N相同。

       -e 选择所有进程。与-A相同。

       g 几乎所有进程,甚至是会议负责人。该标志已过时,将来的发行版中可能会停止使用该标志。
         它通常由a标记暗示,仅在以sunos4个性操作时才有用。

       -N 选择除满足指定条件的所有进程外的所有进程(取消选择)。与--deselect相同。

       T 选择与此终端关联的所有进程。与t选项相同,没有任何参数。

       r 将选择限制为仅正在运行的进程。

       x 取消BSD样式的“必须具有tty”限制,该限制在以下情况下强加于所有进程集
         某些BSD样式(不带“-”)选项或ps个性设置类似于BSD时使用。套装
         除了通过其他方式选择的过程集合之外,以这种方式选择的过程集合中的一个。
         另一个描述是,此选项使ps列出您拥有的所有进程(相同的EUID
         如ps),或列出与a选项一起使用时的所有进程。

按清单选择过程
       这些选项以空格或逗号分隔列表的形式接受单个参数。它们可以多次使用。例如:ps -p "1 2" -p 3,4

       -123 与 --pid 123 相同

       123 与 --pid 123 相同。

       -C cmdlist
        通过命令名称选择。这将选择其可执行文件名称在cmdlist中给出的进程。

       -G grplist
        按真实组ID(RGID)或名称选择。这将选择真实组名或ID在grplist列表中的进程。真实组ID标识创建流程的用户组,请参阅getgid(2)。

       -g grplist
        通过会话或有效组名选择。按会话选择是由许多标准指定的,但是按有效组选择是其他几种操作系统使用的逻辑行为。
        当列表完全为数字时(按会话数),此ps将按会话选择。仅当还指定了某些组名时,组ID号才起作用。请参阅-s和--group选项。

       --Group grplist
        按真实组ID(RGID)或名称选择。与-G相同。

       --group grplist
        按有效的组ID(EGID)或名称选择。 这将选择有效组名或ID在grplist中的进程。 有效的组ID描述了该进程使用其文件访问权限的
        组(请参阅getegid(2))。 -g选项通常是--group的替代方法。

       p pidlist
        按进程ID选择。 与-p和--pid相同。

       -p pidlist
        通过PID选择。 这将选择其进程ID号显示在pidlist中的进程。 与p相同和--pid。

       --pid pidlist
        按进程ID选择。 与-p和p相同。

       --ppid pidlist
        按父进程ID选择。 这将选择在pidlist中具有父进程ID的进程。 也就是说,它选择的进程是pidlist中列出的进程的子进程。

       -s sesslist
        通过会话ID选择。 这将选择具有在sesslist中指定的会话ID的进程。

       --sid sesslist
        通过会话ID选择。 与-s相同。

       t ttylist
        通过tty选择。 与-t和--tty几乎相同,但也可以与空ttylist一起使用以指示与ps关联的终端。 使用T选项被认为比使用带有空ttylist的t更干净。

       -t ttylist
        通过tty选择。 这将选择与ttylist中给出的终端相关的进程。 终端(tty或用于文本输出的屏幕)可以用几种形式指定:/dev/ttyS1,ttyS1,S1。 普通的“-”可用于选择未附加到任何终端的进程。

       --tty ttylist
        通过终端选择。 与-t和t相同。

       U userlist
        按有效用户ID(EUID)或名称选择。这将选择有效用户名或ID在用户列表中的进程。
        有效用户ID描述了该进程使用其文件访问权限的用户(请参阅geteuid(2))。与-u和--user相同。

       -U userlist
        通过真实用户ID(RUID)或名称选择。它选择真实用户名或ID在用户列表中的进程。
        真实用户ID标识创建进程的用户,请参见getuid(2)。

       -u userlist
        按有效用户ID(EUID)或名称选择。这将选择有效用户名或ID在用户列表中的进程。
        有效用户ID描述了该进程使用其文件访问权限的用户(请参阅geteuid(2))。与U和--user相同。

       --User userlist
        通过真实用户ID(RUID)或名称选择。与-U相同。

       --user userlist
        按有效用户ID(EUID)或名称选择。与-u和U相同。

输出格式控制
       这些选项用于选择ps显示的信息。输出可能因个性而异。

       -c 显示-l选项的不同调度程序信息。

       --context 显示安全上下文格式(用于SELinux)。

       -f 执行全格式列表。该选项可以与许多其他UNIX风格的选项结合使用以添加其他列。它还会导致命令参数被打印。
          与-L一起使用时,将添加NLWP(线程数)和LWP(线程ID)列。请参阅c选项,format关键字args和format关键字comm。

       -F 额外的完整格式。请参阅-f选项(-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,格式,状态,tname,时间,命令相同或-o pid,格式,tname,时间,
              cmd,请参见下面的-o。

       o format
              指定用户定义的格式。与-o和--format相同。

       -o 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 不显示标志; 显示rss代替addr。 此选项只能与-l一起使用。

        Z 添加一列安全数据。 与-M相同(对于SELinux)。


输出修改器
        c 显示真实的命令名称。 这是从可执行文件的名称派生的,而不是从argv值派生的。 因此,不会显示命令参数及其任何修改。 该选项有效地将args格式关键字转换为
        comm格式关键字。 它与-f格式选项和各种BSD样式的格式选项(通常都显示命令参数)一起使用时非常有用。 请参见-f选项,格式关键字args和格式关键字comm。

        --cols n 设置屏幕宽度。

        --columns n 设置屏幕宽度。

        --cumulative 包括一些无效的子进程数据(作为父进程的总和)。

        e 在命令后显示环境。

        f ASCII艺术进程层次结构(森林)。
--forest ASCII艺术处理树。 ...... PROCESS FLAGS 这些值的总和显示在“F”列中,该列由标志输出说明符提供: 1 Fork了但没有执行 4 个使用的超级用户特权 PROCESS STATE CODES 以下是s,stat和状态输出说明符(标题“ STAT”或“ S”)将显示的不同值,以描述进程的状态: D 不可中断的睡眠(通常是IO) R 正在运行或可运行(在运行队列上) S 可中断的睡眠(等待事件完成) T 通过作业控制信号或由于被跟踪而停止 W 分页(自2.6.xx内核以来无效) X 已死(不应该被看到) Z 失效(“僵尸”)进程,已终止但未由其父进程获得

......

一、补充

1. ps -A 就有UID的打印。一个应用的所有进程的UID是同一个,比如拼多多的。ps -AT还可以显示线程名

# ps -A | grep pinduoduo
u0_a273       10436    839 2089428 262556 do_epoll_wait       0 S com.xunmeng.pinduoduo
u0_a273       10617    839 1909500 190772 do_epoll_wait       0 S com.xunmeng.pinduoduo:p0
u0_a273       10850    839 1708396 106320 do_epoll_wait       0 S com.xunmeng.pinduoduo:tit
u0_a273       10938    839 1783144 162572 do_epoll_wait       0 S com.xunmeng.pinduoduo:p2
u0_a273       11057    839 1777192 164224 do_epoll_wait       0 S com.xunmeng.pinduoduo:p1

2. 在Linux系统上查看调度信息

ps ax -o uname,pid,cls,pri,rtprio,cmd

-o指定了输出的列。列名说明如下:

uname: 进程所属的用户名称。
pid: 进程id。
cls:进程的调度策略。TS表示SCHED_OTHER,FF表示SCHED_FIFO,RR表示SCHED_RR,B表示SCHED_BATCH,IDL表示SCHED_IDLE。
pri:进程的优先级。
rtprio:进程的实时优先级。
cmd:进程的可执行文件名称。

如果是希望查看所有线程,可以使用这样的参数,tid即线程id。

ps ax -L -o uname,pid,tid,cls,pri,rtprio,cmd,comm

3. 在Android系统上查看调度信息

ps -A -o PID,TID,SCHED,PRI,RTPRIO,NICE,PCY,NAME,CMD

这里的列名说明如下:

PID:进程id。
TID:线程id。
SCHED:进程/线程的调度器:0=other, 1=fifo, 2=rr, 3=batch, 4=iso, 5=idle。
PRI:进程/线程的优先级。值越大,优先级越高。
RTPRIO:进程/线程的实时优先级。
NICE:进程/线程的nice值。
PCY:进程/线程的Android调度策略,可能是fg(前台)或者bg(后台)。
NAME:进程名称。
CMD:线程名称。

举个例子:

# ps -A -o PID,TID,SCHED,PRI,RTPRIO,NICE,PCY,NAME,CMD
  PID   TID SCH PRI RTPRIO  NI PCY NAME                        CMD
    1     1   0  19      -   0  fg init                        init
    1   272   0  39      - -20  fg init                        init
    2     2   0  19      -   0  fg [kthreadd]                  kthreadd
    5     5   0  19      -   0  fg [kworker/0:0-events_long]   kworker/0:0-events_long
   12    12   0  19      -   0  fg [ksoftirqd/0]               ksoftirqd/0
 1622  2512   1  42      2  -8  fg surfaceflinger              appSf
 7000  7000   0  29      - -10  ta com.android.launcher        ndroid.launcher
 7000  7007   0  39      - -20  ta com.android.launcher        Signal Catcher
 7505  7579   0   9      -  10  fg com.qti.phone               poo.bg

 

posted on 2021-01-02 00:48  Hello-World3  阅读(250)  评论(0编辑  收藏  举报

导航