【问题标题】:Generating a CSV list from Linux 'ps'从 Linux 'ps' 生成 CSV 列表
【发布时间】:2010-06-25 00:00:56
【问题描述】:

假设我有一个如下所示的ps 命令:

ps -Ao args:80,time,user --sort time 

它会给我一个“空格”分隔的行集。一行可能看起来像这样

paulnath -bash 00:00:00

我想说服 ps 用逗号(甚至制表符!)分隔,这样它就可以被其他语言自动处理。请注意,args 中可能会有空格,因此,按字段唤醒本身不会起作用。

【问题讨论】:

    标签: linux csv ps


    【解决方案1】:

    您可以使用以下语法来放置自己的分隔符:

    ps -Ao "%U,%t,%a"
    

    【讨论】:

    • % 是所谓的 AIX 格式描述符。并非所有 ps 列都有这样的描述符。例如 rsz 列没有它。
    【解决方案2】:

    怎么样:

    ps -Ao args:80,time,user --sort time | 
    sed 's/\([[:digit:]]\{2\}:\)\{2\}[[:digit:]]\{2\}/,\0,/'
    

    这对格式(包括时间)很敏感,并且假定进程没有逗号。他们可以,但如果你想逃避它显然更复杂。

    【讨论】:

    • 把命令行放在最后,否则,如果命令行包含一些,,将很难解析:)
    【解决方案3】:

    您可能想从/proc/[0-9]*/ 获取所需的信息。我想你会发现它比 ps 的输出更易于编程访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多