测量脚本调用的交互式命令的时间

测量脚本调用的交互式命令的时间

假设我想跟踪编辑一组文件所花费的时间,并将它们记录到文件中,我可以使用以下命令从命令行执行此time操作:

time vim test.txt 

我明白了

real    0m8.149s
user    0m0.056s
sys     0m0.008s

很好。现在如果我想将其输出附加到日志文件,

time vim test.txt >> my.log

好吧,当然我最终会做得更详细,以便给我更多的信息,但我没有完成第一步,终端只是挂起并显示以下警告:

Vim: Warning: Output is not to a terminal

重定向会干扰 vim 需要终端。有什么好的解决方法吗?

编辑:一种解决方法可能是以下:

time gnome-terminal -x vim test.txt >> my.log

这将打开一个新的终端窗口,在其中执行 vim。我更愿意留在同一个窗口中,但也可以接受这种解决方法。

编辑:也没有完全起作用,它似乎在某些测试中起作用,在其他一些测试中它处于后台,因此没有测量所用的时间。在我的脚本中,我现在做了类似的事情:

/usr/bin/time -o tmpfile vim test.txt 
echo some stuff `cat tmpfile` some more stuff >>my.log
rm tmpfile

似乎有效。

编辑:它仅在没有两个进程使用相同的 时才有效tmpfile。为了避免这种情况,可以使用正在执行的脚本的 pid 作为临时文件名的一部分:

/usr/bin/time -o $$.tmp vim test.txt 
echo some stuff `cat $$.tmp` some more stuff >>my.log
rm $$.tmp

答案1

你使用的是哪一个time?Bash 内置命令还是 中的命令/usr/bin/time?如果你使用/usr/bin/time(并阅读man time),你会发现你可以将输出记录到文件中,以任何你喜欢的方式格式化输出,......Bash 内置命令的time功能要差得多。

相关内容