【问题标题】:parsing jps output into array将 jps 输出解析为数组
【发布时间】:2012-08-03 14:12:21
【问题描述】:

我在 bash shell 中使用 jps 来查找所有正在运行的 java 进程。我希望能够使用 jps 输出的 PID 列表。我可以使用

成功地将它们打印到屏幕上
jps | awk '{print $1}'

但我希望有多个进程正在运行,我想将它们放在一个数组中。我发现了另一个他们使用的例子

awk '{arr[$1]}'

因为他们想要在数组中的输出是单列。这类似于我想放入数组中的 PID 列。

是否可以将它们通过管道传输到数组中?我无法在需要时更改数组的索引。有一个更好的方法吗?

任何指导都会受到热烈欢迎。 谢谢。

【问题讨论】:

    标签: bash process


    【解决方案1】:

    根据您的第一个示例,您应该能够使用 bash 数组捕获所有进程 ID

    pids=( $(jps | awk '{print $1}') )
    

    一旦进入数组,它们就可以被迭代:

    for pid in "${pids[@]}"; do
         echo $pid
    done
    

    或单独访问

    echo "${pids[0]}"
    echo "${pids[1]}"
    

    ${#pids[@]}找到数组中存储的总数。

    【讨论】:

    • 一旦我将它们列在列表中,我将如何将它们分开?当我要求一个元素时,它给了我 1111 2222。我一直在阅读有关trsed 的一些内容,但我不确定如何将其应用于将两个pid 分开。我见过的大多数例子都去掉了分隔符和换行符。
    【解决方案2】:

    使用 xargs:

    ps 辅助 | grep -ie java | awk '{打印 $2}' | xargs 回显

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-27
      • 2020-01-06
      • 2019-09-23
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      相关资源
      最近更新 更多