2013-05-03 100 views
1

我有一个很长的命令运行在一个非常大的文件。它涉及单个命令中的sort,uniq,grep和awk命令,它们将一个命令的结果管理到另一个命令。unix中运行命令的进度

一旦我发出该命令执行,命令提示符不会返回,直到命令完全执行。

有没有一种方法可以知道命令的执行过程有多少,或者是否有类似的东西,让我们知道这个主命令中的特定命令已经完成了多少?

+1

实际上,没有 - 没有简单的方法来衡量命令管道的进度,如您所描述的。这种排序可能是运行时间最长的阶段;你可以通过它创建的临时文件以某种方式监视它,但这并不是一个定局。这是一个普遍问题;没有简单的方法来衡量大多数命令的进度。 – 2013-05-03 04:51:47

+0

@Gabe:您能否提供更多关于Perl在这种情况下能够做什么的洞察? – 2013-05-03 04:59:14

+0

您可以在其他终端中使用'tail -f'来查看某些输出文件的演变。 – 2013-05-03 05:51:25

回答

-1

Perl最初创建是因为AWK对于手头的任务来说不够强大。使用类似于sortgrep的命令以及与AWK非常相似的语法,使用这些程序将命令行转换为简短的Perl脚本不应该很困难。

的Perl的好处是,你可以很容易地通过print语句传达你的脚本的进度。例如,你可以指示何时做输入文件被加载,当排序完成,等

+3

虽然我第二次传福音,但这不是他的问题的答案。 – tink 2013-05-03 05:48:10

+0

@tink:由于这正是我如何解决问题的原因,我认为这与我可以写的一样接近答案,因为考虑到OP没有给出他的来源。 – Gabe 2013-05-03 13:02:49

1

不知道你在做什么,我不能说这是否会为你工作,但看看pv。它可能适合该法案。