我想测量一个命令的运行时间,无论花费多less时间,它都能显示出来。
例如,
/usr/bin/time -f "%E (real)" SOMECOMMAND
可能会返回4:36:05长时间运行的进程,或者7:27.32为短时间进程。
在第二种情况下,我怎样才能将它的格式设置为7:27或00:07:27 (前导零不重要),因此一眼就可以看出它是7分钟(而不是我最初认为的7小时)?
秒的分数是没有必要的我的测量。
如果你使用Bash,你可以使用内置的time命令。 它输出“米”分钟和“秒”秒而不是模棱两可的冒号。 您可以使用TIMEFORMATvariables来控制输出的格式:
$ time sleep 1.99 real 0m1.999s user 0m0.004s sys 0m0.004s $ TIMEFORMAT=%0lR # truncate (not round) the decimal seconds $ time sleep 1.99 0m1s
TIMEFORMAT的默认值:
TIMEFORMAT=$'\nreal\t%3lR\nuser\t%3lU\nsys%3lS'
编辑:
您也可以使用sed修改/usr/bin/time的输出以类似的方式消除歧义:
$ /usr/bin/time -f "%E" sleep 1.99 2>&1 | sed 's/:\([^:]\+\)$/m\1/;s/:/h/;s/\..*//;s/$/s/'
使用模拟time输出演示:
$ echo -e '0:01.99\n10:11:12' | sed 's/:\([^:]\+\)$/m\1/;s/:/h/;s/\..*//;s/$/s/' 0m01s 10h11m12s
尝试通过这个切割命令pipe道。 我不是在Linux shell的前面试试,所以你的里程可能会有所不同。 例如,我不确定第一个字段是零还是一个。
切-d。 -f 1