bash脚本不等待其他进程完成打印持续时间

时间:2017-04-27 09:20:11

标签: bash shell

我正在尝试衡量我的流程完成所需的时间,如下所示:

#!/bin/bash


SECONDS=0
launching some processes
process1
process2
process3

duration=$SECONDS
echo "Time: $duration"

但是,它会在脚本运行时立即打印echo,然后其他进程开始运行,因此时间不会考虑进程的持续时间。 如何让它等到过程结束然后打印持续时间?

更新

我的流程是这样的,这是一个例子:

$ROOT/transform --config=file1.xml --param2=value2 --param3=file3.xml $TARGET/input.xml > $TARGET/output2.xml

2 个答案:

答案 0 :(得分:1)

使用time命令,例如

shell> time my_shellscript.sh

它会为你完成这项工作。 Here是一个解释它的网站。或man page获取更多信息。

如果你想在shellcript中做到这一点,你必须指定你正在等待(或多次)的过程的PID。

#!/bin/bash

process1 &
PID_process1=$!
process2 &
PID_process2=$!

wait $PID_process1 $PID_process2

答案 1 :(得分:0)

您必须在wait之前放置echo以等待进程结束。像这样:

wait
echo "Time: $duration'