【问题标题】:How to run a second process with dependency to a running process using shell script?如何使用 shell 脚本运行依赖于正在运行的进程的第二个进程?
【发布时间】:2020-03-23 17:57:55
【问题描述】:

我想使用 shell 脚本对 2 个进程进行自动化处理。 我有 2 个程序,a 是一个工作负载,b 是一个 CPU 分析器,用于在 a 运行时分析 cpu。

以前,我通过打开 2 个终端手动运行这些程序。首先,在第一个终端运行a,然后在另一个终端,我得到a的进程ID,最后运行./b [pid-of-a]。这导致我错过了进程 a 前几秒的分析。

我试过了:

./a &
pid=$! & 
./b pid

但它并没有按照我想要的方式工作。它首先运行 b 并返回错误,因为 a 的 PID 不存在。我也不能使用&&,因为它会在 b 开始之前等待 a 先完成,这不是我想要的方式。

关于这种依赖,我应该对我的代码做哪些修改?

【问题讨论】:

    标签: linux shell terminal


    【解决方案1】:

    不要在后台设置pid,要展开的时候记得放一个$

    ./a & 
    pid=$!
    ./b "$pid"
    

    或者只是

    ./a &  
    ./b $!
    

    【讨论】:

      【解决方案2】:

      编写一个 bash 脚本,该脚本将使用 pgrep 检查 ProcessA 并获取其 pid

      #!/bin/sh
      
      while true
      do
          pid=`pgrep -f processA`
          if [ ! -z $pid ]
          then
              ./processB $pid
              break
          fi
      done

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-30
        • 2014-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-19
        相关资源
        最近更新 更多