示例生成的进程是活动的并退出代码

时间:2017-06-08 13:07:17

标签: linux bash continuous-integration sh

我有bash脚本运行一个长时间运行的进程,它会向stdout输出很多东西。我让脚本只在完成后打印过程输出,并且仅在失败时打印。

我的问题是,某些CI每X分钟需要一些标准输出,并且该过程有时需要比X分钟更多。

我正在考虑使用bash解决方案:

  1. 运行该过程并将stdout放在一边。
  2. 在进程运行时,打印“。” stdout每X秒 - 表示脚本仍在运行。
  3. 完成此过程后,将能够获取其退出代码并相应地重新编译。
  4. 这是我开始写的:

    run_process > output.txt 2>&1 & my_pid=$!
    exited=0
    while [ ${exited} -eq 0 ]
    do
      timeout wait 5s ${my_pid};exit_code=$?;exited=1
      echo .
    done
    

    显然,这不起作用,因为超时无法获得一系列命令。 你有其他解决方案吗?

1 个答案:

答案 0 :(得分:0)

试试这个:

run_process > output.txt 2>&1 & my_pid=$!
while ps -p $my_pid > /dev/null; do
  echo -n .
  sleep 5
done

wait获取退出值:

wait $mypid
echo $?