这是这。但由于它们没有关系,所以我又提出了另一个问题。
因此,在这种情况下,我运行多个后台进程以加快程序执行时间。这很有效。整个执行的 CPU 时间现在已降至最低值。
但我希望看到一些来自后台进程的输出。主脚本目前正在运行的是这样的。
#!/bin/bash
total_procs=10
for ((i=0;i<$total_procs;i++)); do
echo "[MASTER]: Spawning child ${i}."
bash _spawn.sh ${i} &
done
wait #for the processes to end
为了简单起见,我们只能这样说_spawn.sh脚本做了一些简单的事情,例如:
#!/bin/bash
my_arg=${1}
echo "[${my_arg} ]: Hi, I am child #${my_arg}!
主脚本被调用的终端上的输出现在如下所示:
[MASTER]: Spawning child 0.
[MASTER]: Spawning child 1.
[MASTER]: Spawning child 2.
[MASTER]: Spawning child 3.
[MASTER]: Spawning child 4.
[MASTER]: Spawning child 5.
[MASTER]: Spawning child 6.
[MASTER]: Spawning child 7.
[MASTER]: Spawning child 8.
[MASTER]: Spawning child 9.
但是,我希望看到的是这样的(尽管“并行”过程在后台):
[MASTER]: Spawning child 0.
[0 ]: Hi, I am child #0!
[MASTER]: Spawning child 1.
[1 ]: Hi, I am child #1!
[MASTER]: Spawning child 2.
[2 ]: Hi, I am child #2!
[MASTER]: Spawning child 3.
[3 ]: Hi, I am child #3!
[MASTER]: Spawning child 4.
[4 ]: Hi, I am child #4!
[MASTER]: Spawning child 5.
[5 ]: Hi, I am child #5!
[MASTER]: Spawning child 6.
[6 ]: Hi, I am child #6!
[MASTER]: Spawning child 7.
[7 ]: Hi, I am child #7!
[MASTER]: Spawning child 8.
[8 ]: Hi, I am child #8!
[MASTER]: Spawning child 9.
[9 ]: Hi, I am child #9!
有办法实现这个吗?