/ usr / bin / time只计时pipe道的第一个组件

我正在尝试使用以下命令,并最终将结果输出到文件(因此使用/ usr / bin / time。但是,定时的命令始终是seq 1 2,而不是整个命令:

/usr/bin/time -v seq 1 2 | parallel ssh-keygen -G /folder/{}.candidate -b 768 

有没有办法确保整个命令是时间的,而不仅仅是第一个小部分?

如果你正在使用bash那么使用内置bash更容易:

 $ time cmd1 | cmd2 | cmd3 

将整个管道的时间。

如果您真的想使用外部time命令,则必须在子外壳中运行管道:

 $ /usr/bin/time sh -c 'cmd1 | cmd2 | cmd3' 

否则你会在管道时间,而不是定时管道。

这个语法也有很好的副作用,很容易将命令的输出和time分开:

 $ /usr/bin/time sh -c 'cmd1 | cmd2 > cmdout.txt 2> cmderr.txt' 2>> time.txt 

然而,在报价中有一个额外的困难。 如果你的命令本身包含引号,你可能需要以难以理解的方式逃避它们。