你如何知道一个正在运行的进程需要多长时间才能完成?
例子:
date; dd bs=1m if=/foo of=bar; date
Run Code Online (Sandbox Code Playgroud)
^这个例子只有 1 秒的分辨率。
任何外壳都是可以接受的。
我使用在 Ubuntu 14.04 的标准终端上time计时Perl脚本。
我读过那real time是秒表时间;作为用户,我花时间查看从启动程序到终止的程序。但我不明白是什么user或sys时间是什么。time至少可以说,手册页是模糊的。
虽然有点清楚real时间是分开的user,sys但不清楚它们代表什么。
在我的脚本中,我正在对 C++ 和 Perl 进行基准测试 [1] 以查看差异,并且我想知道我实际获得了哪些数据。一个示例输出是:
real 0m24.198s
user 0m23.120s
sys 0m1.030s
Run Code Online (Sandbox Code Playgroud)
有人可以详细说明默认的时间格式告诉用户什么吗?我是 Linux 的新手,所以请不要假设太多。
[1] 有趣的是,虽然在我的基准测试中,C++ 在real时间方面比 Perl 快得多,但sys时间差别不大,实际上 C++ 使用的sys时间比 Perl 多。这就是为什么我想知道它们是什么意思
man time显示它有一些选项,例如,将输出写入time文件而不是stderr:
-o FILE, --output=FILE
Run Code Online (Sandbox Code Playgroud)
所以,我尝试使用它
$ time -o out.txt ls
-o: command not found
real 0m0.081s
user 0m0.070s
sys 0m0.012s
Run Code Online (Sandbox Code Playgroud)
这不行!它说-o: command not found。
证明out.txt不存在:
$ cat out.txt
cat: out.txt: No such file or directory
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我如何使用像-o somefile.txtwith这样的选项time?
我使用 Linux Ubuntu 18.04bash作为我的终端。