我正在尝试使用以下命令,并最终将结果输出到文件(因此使用/ 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
然而,在报价中有一个额外的困难。 如果你的命令本身包含引号,你可能需要以难以理解的方式逃避它们。