【发布时间】:2015-03-16 09:02:36
【问题描述】:
我有 2 个程序:known 和 unknown。我知道known 程序的输出(它是常量),但我不知道unknown 程序的输出(在某些情况下可能与known 相同)。我想在 Linux 机器上并行运行它们,以便它们都获得相同的 CPU 能力。我为此找到了几种解决方案,但我面临的问题是检测哪个程序先结束。
我尝试了echo $(./known & ./unknown),它工作正常,但如果两个输出相同,我无法检测哪个先结束。
我也试过echo $(./known & time ./unknown > /dev/null),但由于某种原因,time 命令的输出总是在known 命令之前打印,即使我故意让unknown 比known 慢(所以它应该是另一种方式)。输出是这样的:
echo $(./known & time ./unknown >/dev/null)
real 0m2.054s
user 0m3.072s
sys 0m0.000s
b
这里,'b' 是 known 命令的输出,我希望首先打印它,因为它是更快的程序。
那么知道如何检测哪个进程先结束吗?
【问题讨论】:
-
echo $(./known&&echo "known first" & ./unknown&&echo "unknown first") -
@JID 谢谢,但有一个问题。像这样的东西弹出:
[1] 23191。我该如何摆脱它? -
@JID 此外,由于某种原因,稍后结束的输出显示在命令输入行(user@pc:~$...)中,按
后显示其他一些不需要的文本,例如 [1]+ Done。这很乱:( -
不要运行后台命令...
-
@JID 抱歉,我没听懂。有没有办法在前台做到这一点?
标签: performance bash time command-line parallel-processing