【问题标题】:Getting PID of process in Shell Script在Shell脚本中获取进程的PID
【发布时间】:2013-06-02 15:19:22
【问题描述】:

我正在编写一个 shell 脚本,我想获取一个名为“ABCD”的进程的 PID。我所做的是:

process_id=`/bin/ps -fu $USER|grep "ABCD"|awk '{print $2}'`

这会获取两个进程的 PID,即进程 ABCD 和 GREP 命令本身,如果我不想执行 GREP 的 PID 而我只想要 ABCD 进程的 PID,该怎么办?

请提出建议。

【问题讨论】:

    标签: linux shell unix pid


    【解决方案1】:

    只需 grep 离开 grep 本身!

    process_id=`/bin/ps -fu $USER| grep "ABCD" | grep -v "grep" | awk '{print $2}'`
    

    【讨论】:

    • 感谢您的快速回答。它有效。另外,如果我不想要正在执行此操作的脚本的 PID,该怎么办。因为我的脚本还包含 ABCD
    • 当然你可以想办法再次“grep away”,作为脚本的 PID,它应该可以通过 $$ 变量获得
    • 避免第二个 grep 的技巧是给 grep 一个正则表达式匹配相同的东西,但在命令行中显示不同:... | grep "[A]BCD" | awk ...
    【解决方案2】:

    你试过用pidof ABCD吗?

    【讨论】:

    • 这实际上是大多数情况下更好的答案:)
    • pgrep ABCD
    【解决方案3】:

    这是非常直接的。 ABCD 应替换为您的进程名称。

    #!/bin/bash
    
    processId=$(ps -ef | grep 'ABCD' | grep -v 'grep' | awk '{ printf $2 }')
    echo $processId
    

    有时您需要将 ABCD 替换为软件名称。示例 - 如果您运行像 java -jar TestJar.jar & 这样的 java 程序,那么您需要将 ABCD 替换为 TestJar.jar

    【讨论】:

      【解决方案4】:

      ps 有一个选项:

      process_id=`/bin/ps -C ABCD -o pid=`
      

      【讨论】:

        【解决方案5】:

        您也可以取消 grep 并仅使用 awk
        使用awkexpression matching 匹配进程名称,但不匹配自身。

        /bin/ps -fu $USER | awk '/ABCD/ && !/awk/ {print $2}'
        

        【讨论】:

          【解决方案6】:

          您可以使用此命令来 grep 特定进程的 pid & echo $b 打印任何正在运行的进程的 pid:

          b=`ps -ef | grep [A]BCD | awk '{ printf $2 }'`
          echo $b
          

          【讨论】:

            【解决方案7】:

            ps | pgrep ABCD

            你可以试试上面的命令返回ABCD进程的进程id。

            【讨论】:

              【解决方案8】:

              我找到了更好的方法。

              top -n 1 | grep "@#" | grep -Eo '^[^ ]+' 
              

              【讨论】:

                猜你喜欢
                • 2022-01-05
                • 1970-01-01
                • 2014-10-05
                • 1970-01-01
                • 2012-03-04
                • 1970-01-01
                • 2013-10-28
                • 1970-01-01
                相关资源
                最近更新 更多