代码之家  ›  专栏  ›  技术社区  ›  Rick

Linux/Bash,使用ps-o按特定名称获取进程?

  •  57
  • Rick  · 技术社区  · 15 年前

    我正在尝试使用ps-o命令来获取与某个名称匹配的进程的特定信息。但是,我在这方面有一些问题,当我尝试使用它来获取所有进程时,就像这样,它只返回一个普通进程的子集 ps -ef 将返回(它不会返回几乎相同数量的结果,因此不会返回所有正在运行的进程)

    ps -ef -o pid,time,comm
    

    ps -ef |grep `whoami`| grep firefox-bin
    

    任何关于如何正确操作的建议都将不胜感激,谢谢

    5 回复  |  直到 15 年前
        1
  •  100
  •   Alex Howansky    15 年前

    pidof name
    

    您可以将其插回ps以了解更多详细信息:

    ps -p $(pidof name)
    
        2
  •  27
  •   jlliagre    12 年前

    ps -o pid -C bash
    

    编辑:取决于您期望的输出类型, pgrep 会更优雅。据我所知,这是Linux特有的,并产生与上述类似的输出。例如:

    pgrep bash
    
        3
  •  12
  •   Gerald Hughes    11 年前
    ps -fC PROCESSNAME
    

    ps和grep是一个危险的组合——grep试图匹配每一行中的所有内容(因此非常常见:grep-vgrep-hack)。ps-C不使用grep,它使用进程表进行精确匹配。因此,您将使用:ps-fC sh得到一个准确的列表,而不是在行的某个地方找到每个使用sh的进程。

        4
  •  5
  •   user3751385    10 年前

    有时您需要按名称对流程进行grep—在这种情况下:

    ps aux | grep simple-scan
    

    输出示例:

    simple-scan  1090  0.0  0.1   4248  1432 ?        S    Jun11   0:00
    
        5
  •  2
  •   Spade    8 年前

    pgrep -x PROCESS_NAME

    -x          Require an exact match of the process name, or argument list if -f is given.
                 The default is to match any substring.
    

    如果原始进程创建了子进程(在查询时可能是僵尸进程),而子进程以其自己的名称作为原始进程名称的前缀,并且您试图将其从结果中排除,那么这将非常有用。有许多UNIX守护进程可以做到这一点。我的例子是 忍者开发同步

    推荐文章