Answers:
time
在要测量的命令之前添加。例如:time ls
。
输出将如下所示:
real 0m0.606s
user 0m0.000s
sys 0m0.002s
说明上real
,user
和sys
(来自man time
):
real
:进程使用的实际经过时间(墙上时钟),以秒为单位。user
:进程(在用户模式下)直接使用的CPU秒总数,以秒为单位。sys
:系统代表进程使用的CPU秒总数(在内核模式下),以秒为单位。sudo apt-get install time
如果您使用的time
不是内置shell,则可能需要。
time
内置,但man time
将大约一个可执行文件(例如/usr/bin/time
,从time
包中),其输出会有所不同。同样在Bash中,您可以运行help time
内置程序以寻求帮助。
对于逐行增量测量,请尝试gnomon。
这是一个命令行实用程序,有点像moreutils的ts,用于将时间戳信息附加到另一个命令的标准输出中。对于长时间运行的过程很有用,在该过程中您需要花费很长时间的历史记录。
用管道输送要忽略的内容将在每行前面添加一个时间戳,指示该行是缓冲区中最后一行的时间-即下一行显示需要多长时间。默认情况下,gnomon将显示每行之间经过的秒数,但这是可配置的。
sudo npm i gnomon -g
如果有的话,您可以安装它npm
。不确定使用'\ r'对“ progress”行的处理效果如何(保持在同一行):在这种情况下,我希望将其全部计为一个长行,而不是单独的行。
date +"%T" && cp -r ./file /destination/folder/here && date +"%T"
在终端中运行此命令将为您提供处理文件的总时间
find
命令(不带2>/dev/null
重定向)给出大量 Permission denied
消息。但是,添加2>/dev/null
到该命令会破坏该命令的time
一部分。以下是一个很好的折衷方案:START="$(date +"%s")" && find 2>/dev/null / -path /mnt -prune -o -name "*libname-server-2.a*" -print; END="$(date +"%s")"; TIME="$((END - START))"; printf 'find command took %s sec\n' "$TIME"
,给出(例如)/usr/lib/libname-server-2.a find command took 3 sec
作为唯一输出。
time sudo find / -path /mnt -prune -o -name "*libname-server-2.a*" -print
(即as sudo
)-避免那些过多的Permission denied
警告。
有时,我发现自己需要秒表来计算一次操作(例如启动应用程序)所花费的时间,在这种情况下,此处的许多解决方案都没有用。
为此,我喜欢使用sw。
wget -q -O - http://git.io/sinister | sh -s -- -u https://raw.githubusercontent.com/coryfklein/sw/master/sw
sw
- start a stopwatch from 0, save start time in ~/.sw
sw [-r|--resume]
- start a stopwatch from the last saved start time (or current time if no last saved start time exists)
- "-r" stands for --resume
time -v command
-v
提供更多信息
real
,user
以及sys
时间,这个命令返回?