假设我想跟踪编辑一组文件所花费的时间,并将它们记录到文件中,我可以使用以下命令从命令行执行此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
功能要差得多。