Linux time命令用法(time指令)(计算程序执行时间、运行时间)/usr/bin/time、real(实际时间)、user(用户CPU时间)、sys(系统CPU时间)挂钟时间
Dontla 2024-07-31 11:37:01 阅读 63
文章目录
Linux time 命令用法详解注意:对于`time`命令,实际上有两个版本。一个是shell的内建(builtin)命令,另一个是/bin或/usr/bin下的独立可执行程序。本文将以`$(which time)`对应的time讲解time命令用法1. 基本语法2. 常见选项3. 输出解析real(实际时间)user(用户CPU时间)sys(系统CPU时间)
4. 使用示例4.1 测量简单命令的运行时间4.2 使用 `-p` 选项为什么说time -p参数使输出更具有可移植性?
4.3 使用 `-v` 选项`-v`选项结果解读
5. 疑难解析:区分real、user和sys时间6. 结论
Linux time 命令用法详解
Linux <code>time命令是一个非常实用的工具,主要用于计算程序执行的时间。这个命令可以用来度量一段代码或者脚本的运行时间,有助于性能调优和基准测试。
注意:对于time
命令,实际上有两个版本。一个是shell的内建(builtin)命令,另一个是/bin或/usr/bin下的独立可执行程序。本文将以$(which time)
对应的time讲解time命令用法
在许多shell中(例如bash和dash),time
是一个内建命令,它只支持-p
选项。在这些shell中执行time
命令时,即使你安装了独立的/usr/bin/time
程序,也会优先使用内建命令。
另一方面,/usr/bin/time
或/bin/time
是一个独立的可执行程序,它提供了更多的功能和选项,包括-v
选项。
如果想使用-v
选项,需要确保调用的是独立的time
程序。可以通过指定完整的路径来调用它,例如:
/usr/bin/time -v ls
或者,如果不确定time
程序的具体位置,也可以使用which
命令来查找:
$(which time) -v ls
如果发现系统中没有/usr/bin/time
或/bin/time
,可能是因为没有安装。在Ubuntu或Debian系的系统中,可通过下面的命令进行安装:
sudo apt-get install time
1. 基本语法
time [options] command [arguments...]
这里,options
表示命令选项,command
表示要执行的命令,arguments
表示命令参数。
2. 常见选项
<code>-p:以可移植输出格式打印实际时间、用户 CPU 时间和系统 CPU 时间。-v
:提供更详细的信息,包括进程使用的系统资源。
3. 输出解析
time
命令通常会输出三种时间:
real(实际时间)
从开始到结束的墙钟时间(wall-clock time)。也就是我们常说的实际时间。
user(用户CPU时间)
在用户模式中执行该过程所花费的CPU时间。
sys(系统CPU时间)
在内核模式中执行该过程所花费的CPU时间。
4. 使用示例
下面通过几个例子来展示time
命令的使用。
4.1 测量简单命令的运行时间
$(which time) ls
这条命令将测量ls
命令的运行时间。
4.2 使用 <code>-p 选项
$(which time) -p ls
使用 -p
选项,可以使输出更具可移植性。
注意结果单位为秒。
为什么说time -p参数使输出更具有可移植性?
<code>-p参数在time
命令中,是用来输出可移植格式的时间信息。这种格式相对简单,不依赖于特定的区域设置或者语言环境。
在没有使用-p
参数时,time
命令的输出格式可能会受到操作系统、Shell版本或者地区设置的影响。例如,在某些系统上,默认的输出格式可能包括毫秒级别的精度,而在其他系统上,则只有秒级别的精度。或者在一些非英文的环境下,“real”、"user"和"sys"可能会被翻译成其他语言。
但当使用了-p
参数后,无论在何种环境下,time
命令都会以固定的格式来输出结果:每种时间信息占一行,时间类型和具体数值之间由一个空格分隔,时间数值保留到小数点后两位。这种格式简洁明了,不会受到任何外部因素的干扰,更适合在脚本中进行解析或者在不同系统之间进行比较。
4.3 使用 -v
选项
$(which time) -v ls
使用 -v
选项,可以获得关于进程使用的系统资源的详细信息。
<code>-v选项结果解读
Command being timed
: 被测量时间的命令User time (seconds)
: 在用户模式中运行所消耗的CPU时间(单位:秒)System time (seconds)
: 在内核模式中运行所消耗的CPU时间(单位:秒)Percent of CPU this job got
: 这个任务获得的CPU时间百分比Elapsed (wall clock) time
: 实际过去的时间,也被称为挂钟时间(格式:小时:分钟:秒 或 分钟:秒)Average shared text size
: 平均共享文本区域大小(单位:KB)Average unshared data size
: 平均非共享数据区域大小(单位:KB)Average stack size
: 平均栈大小(单位:KB)Average total size
: 平均总大小(单位:KB)Maximum resident set size
: 最大常驻集大小,即进程在内存中占用的最大物理内存空间(单位:KB)Major (requiring I/O) page faults
: 需要进行I/O操作的主要缺页次数Minor (reclaiming a frame) page faults
: 不需要进行I/O操作的次要缺页次数Voluntary context switches
: 自愿上下文切换的次数Involuntary context switches
: 非自愿上下文切换的次数Swaps
: 交换次数File system inputs
: 文件系统输入操作的数量File system outputs
: 文件系统输出操作的数量Socket messages sent
: 发送的套接字消息数量Socket messages received
: 接收的套接字消息数量Signals delivered
: 交付的信号数量Page size (bytes)
: 页面大小(单位:字节)Exit status
: 命令退出状态,0通常表示成功执行
5. 疑难解析:区分real、user和sys时间
real:此时间是指从命令开始执行到结束的总体时间,包括其他进程占用的CPU时间和该进程在等待I/O或者执行某些操作时所经过的时间。user:此时间是指CPU在执行用户模式代码所花费的时间。这包括执行调用库函数(不涉及系统调用)的时间。sys:此时间是指CPU在执行内核模式代码所花费的时间。这通常涉及到一些系统调用,例如进行文件或网络I/O的调用。
注意,如果在多核处理器上运行程序,用户和系统时间可能超过实际时间。因为多个CPU核心可以同时工作,可能会累积更多的CPU时间。
6. 结论
time
命令是一个强大的工具,它可以帮助开发人员测量和优化代码性能。通过了解其基本用法和输出,可以更好地理解程序的执行情况,为性能优化提供依据。
上一篇: Centos 7如何修改密码
下一篇: 电竞玩家的云端盛宴!四大云电脑平台:ToDesk、顺网云、青椒云、极云普惠云实测大比拼
本文标签
Linux time命令用法(time指令)(计算程序执行时间、运行时间)/usr/bin/time、real(实际时间)、user(用户CPU时间)、sys(系统CPU时间)挂钟时间
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。