jac*_*ack 75 shell command-line
是否可以使用以下组合打印shell命令的执行时间?
root@hostname:~# "command to execute" && echo "execution time"
Run Code Online (Sandbox Code Playgroud)
mob*_*mob 104
time 是大多数shell中的内置命令,它将执行时间信息写入tty.
你也可以尝试类似的东西
start_time=`date +%s`
<command-to-execute>
end_time=`date +%s`
echo execution time was `expr $end_time - $start_time` s.
Run Code Online (Sandbox Code Playgroud)
或者在bash:
start_time=`date +%s`
<command-to-execute> && echo run time is $(expr `date +%s` - $start_time) s
Run Code Online (Sandbox Code Playgroud)
Mar*_*off 64
不要忘记bash的内置time(当你这样做时应默认调用time command)和/usr/bin/time(它应该要求你通过其完整路径调用它)之间存在差异.
内置程序time始终打印到stderr,但/usr/bin/time允许您将时间输出发送到特定文件,因此您不会干扰执行的命令的stderr流.此外,/usr/bin/time可以在命令行或环境变量上配置格式TIME,而bash的内置time格式仅由TIMEFORMAT环境变量配置.
$ time factor 1234567889234567891 # builtin
1234567889234567891: 142662263 8653780357
real 0m3.194s
user 0m1.596s
sys 0m0.004s
$ /usr/bin/time factor 1234567889234567891
1234567889234567891: 142662263 8653780357
1.54user 0.00system 0:02.69elapsed 57%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+215minor)pagefaults 0swaps
$ /usr/bin/time -o timed factor 1234567889234567891 # log to file `timed`
1234567889234567891: 142662263 8653780357
$ cat timed
1.56user 0.02system 0:02.49elapsed 63%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (0major+217minor)pagefaults 0swaps
Run Code Online (Sandbox Code Playgroud)
Jas*_*son 24
root@hostname:~# time [command]
Run Code Online (Sandbox Code Playgroud)
它还区分使用的实时时间和使用的系统时间.
添加到@ mob的答案:
追加%N到date +%s给了我们精确到纳秒:
start=`date +%s%N`;<command>;end=`date +%s%N`;echo `expr $end - $start`
Run Code Online (Sandbox Code Playgroud)
小智 5
在 zsh 中,您可以使用
=time ...
Run Code Online (Sandbox Code Playgroud)
在 bash 或 zsh 中,您可以使用
command time ...
Run Code Online (Sandbox Code Playgroud)
这些(通过不同的机制)强制使用外部命令。
如果我要启动一个长时间运行的过程(例如副本或哈希),并且想在以后知道它花费了多长时间,则可以执行以下操作:
$ date; sha1sum reallybigfile.txt; date
Run Code Online (Sandbox Code Playgroud)
这将导致以下输出:
Tue Jun 2 21:16:03 PDT 2015
5089a8e475cc41b2672982f690e5221469390bc0 reallybigfile.txt
Tue Jun 2 21:33:54 PDT 2015
Run Code Online (Sandbox Code Playgroud)
诚然,如此处所实现的,它不是很精确,也不计算经过的时间。但这很简单,有时甚至是您所需要的。