为什么从makefile中背景`script`会大大增加cpu的使用量?

时间:2014-02-07 23:08:13

标签: bash shell makefile bsd

首先介绍一下上下文:我在调用它是在一个shell脚本中,该脚本是从与make -j4同时执行的make调用的。我没有找到任何可靠的方法来自动写入stdout,所以我对该过程进行了后台处理,发现它工作得相当好。不幸的是,这样做似乎消耗了大约两倍的CPU。请注意,在makefile之外,命令的工作方式都相同。

答:

script -q /dev/null big_long_command 2>&1 > /dev/null &
PID=$!
wait $PID
RET=$?

B:

script -q /dev/null big_long_command 2>&1 > /dev/null
PID=$!
wait $PID
RET=$?

我还应该提到big_long_command在正常情况下不会输出任何内容,尽管它是一个cpu密集型进程,它将最大化单个内核(C ++编译)。顶部的输出显示,使用方法A,big_long_commandscript具有大致相等的cpu利用率(maxed out),而对于B,script根本不消耗任何内容。这是为什么?

*注意,script是命令的名称,而不是shell脚本。

0 个答案:

没有答案