Linux系统之time命令的基本使用

简介: Linux系统之time命令的基本使用

在这里插入图片描述

一、time命令介绍

统计给定命令所花费的总时间:time 命令在 Unix 和类 Unix 系统(如 Linux)中被用来测量一个命令或程序的执行时间。它能够报告用户 CPU 时间、系统 CPU 时间以及实际经过的时间(也称为墙钟时间)。

二、time版本介绍

2.1 time版本简介

在大多数 Unix 和类 Unix 系统中,time 命令有两个版本:一个是 shell 内置的 time,另一个是 GNU time,通常位于 /usr/bin/time。这两个版本有一些关键的区别:

  • Shell 内置的 time

位置:这个 time 是 shell 的一部分,不是独立的可执行文件。
选项:它支持较少的选项,通常只支持基本的时间测量功能。
输出:它的输出格式比较固定,一般只能显示 real, user, sys 时间。
  • GNU time
位置:这个 time 通常是 /usr/bin/time,是一个独立的可执行文件。
选项:它支持更多的选项,比如 -o(将输出重定向到文件)、-a(追加到文件)、-f(自定义输出格式)等。

2.2 检查 time 的类型

可以使用 type -a time 命令来查看系统中所有可用的 time 版本:

type -a time

如果返回的结果中:

time is a shell keyword #shell 内置的 time
time is /usr/bin/time #第二行表示 GNU time。

2.3 安装GNU time

如果 GNU time 没有安装,你可以通过包管理器来安装它。在 openEuler 中,通常使用 dnf 包管理器:

dnf install time

在这里插入图片描述

三、time命令的使用帮助

3.1 Shell内置time用法

  • 基本语法
time [选项] 命令(指令:指定需要运行的额指令及其参数)

3.2 GNU time用法

使用/usr/bin/time --help查询 GNU time用法

[root@openEuler-test ~]# /usr/bin/time --help
Usage: /usr/bin/time [OPTIONS] COMMAND [ARG]...
Run COMMAND, then print system resource usage.

  -a, --append              with -o FILE, append instead of overwriting
  -f, --format=FORMAT       use the specified FORMAT instead of the default
  -o, --output=FILE         write to FILE instead of STDERR
  -p, --portability         print POSIX standard 1003.2 conformant string:
                              real %%e
                              user %%U
                              sys %%S
  -q, --quiet               do not print information about abnormal program
                            termination (non-zero exit codes or signals)
  -v, --verbose             print all resource usage information instead of
                            the default format
  -h,  --help               display this help and exit
  -V,  --version            output version information and exit

Commonly usaged format sequences for -f/--format:
(see documentation for full list)
  %%   a literal '%'
  %C   command line and arguments
  %c   involuntary context switches
  %E   elapsed real time (wall clock) in [hour:]min:sec
  %e   elapsed real time (wall clock) in seconds
  %F   major page faults
  %M   maximum resident set size in KB
  %P   percent of CPU this job got
  %R   minor page faults
  %S   system (kernel) time in seconds
  %U   user time in seconds
  %w   voluntary context switches
  %x   exit status of command

选项解释·:

选项 描述
-a, --append -o FILE 一起使用时,追加到文件而不是覆盖。
-f, --format=FORMAT 使用指定的 FORMAT 而不是默认格式。
-o, --output=FILE 将输出写入指定的文件而不是标准错误(STDERR)。
-p, --portability 打印符合 POSIX 标准 1003.2 的字符串:
real %%e
user %%U
sys %%S
-q, --quiet 不打印关于异常程序终止的信息(非零退出码或信号)。
-v, --verbose 打印所有资源使用信息,而不是默认格式。
-h, --help 显示帮助信息并退出。
-V, --version 输出版本信息并退出。

四、time命令的直接使用

time后跟执行的命令,则可以可以统计该命令的时间消耗。

[root@openEuler-test ~]# time hostname
openEuler-test

real    0m0.002s
user    0m0.000s
sys    0m0.001s

其中的三项输出的意思,如下所示:

  • real 表示的是整个过程的实际经过时间。
  • user 表示的是用户空间中的代码执行所花费的 CPU 时间。
  • sys 表示的是内核空间中的代码执行所花费的 CPU 时间。

五、/usr/bin/time的基本使用

5.1 /usr/bin/time直接使用

[root@openEuler-test ~]# /usr/bin/time ls
aa  aa.txt  anaconda-ks.cfg  birthday-cake.jpg    gift.jpg  k8s.png  output.png  qrcode.svg  wordpress-4.9.1-zh_CN.tar.gz
0.00user 0.00system 0:00.00elapsed 100%CPU (0avgtext+0avgdata 2424maxresident)k
0inputs+0outputs (0major+113minor)pagefaults 0swaps
  • 第一行:

    第一行是 ls 命令的实际输出,列出了当前目录下的文件和目录。

  • 第二行

    0.00user:用户空间中的代码执行所花费的 CPU 时间为 0 秒。
    0.00system:内核空间中的代码执行所花费的 CPU 时间为 0 秒。
    0:00.00elapsed:实际经过的时间(wall clock time)为 0 秒。
    100%CPU:CPU 使用率为 100%。这个值是 (user + system) / elapsed 的百分比。由于 elapsed 时间非常短,所以即使 user 和 system 时间都是 0,CPU 使用率也可能显示为 100%。
    (0avgtext+0avgdata 2424maxresident)k:
    0avgtext:平均文本段大小为 0 KB。
    0avgdata:平均数据段大小为 0 KB。
    2424maxresident:最大驻留内存大小为 2424 KB。

  • 第三行

    0inputs+0outputs:输入和输出的数据量分别为 0 字节。
    (0major+113minor)pagefaults:
    0major:主要页错误(需要从磁盘读取页面)的数量为 0。
    113minor:次要页错误(可以在内存中找到页面)的数量为 113。
    0swaps:交换操作的次数为 0。

5.2 打印标准输出

使用-p选项,打印以下标准输出。

[root@openEuler-test ~]# /usr/bin/time -p ls
aa  aa.txt  anaconda-ks.cfg  birthday-cake.jpg    gift.jpg  k8s.png  output.png  qrcode.svg  wordpress-4.9.1-zh_CN.tar.gz
real 0.00
user 0.00
sys 0.00

5.3 打印所有资源信息

使用-v选项,打印所有资源信息。

[root@openEuler-test ~]#  /usr/bin/time -v ls
aa  aa.txt  anaconda-ks.cfg  birthday-cake.jpg    gift.jpg  k8s.png  output.png  qrcode.svg  wordpress-4.9.1-zh_CN.tar.gz
    Command being timed: "ls"
    User time (seconds): 0.00
    System time (seconds): 0.00
    Percent of CPU this job got: 0%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.00
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 2456
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 0
    Minor (reclaiming a frame) page faults: 113
    Voluntary context switches: 1
    Involuntary context switches: 0
    Swaps: 0
    File system inputs: 0
    File system outputs: 0
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0
字段 描述
Command being timed "ls" 正在计时的命令是 ls
User time (seconds) 0.00 用户空间中的代码执行所花费的 CPU 时间(秒)。
System time (seconds) 0.00 内核空间中的代码执行所花费的 CPU 时间(秒)。
Percent of CPU this job got 0% 该任务获得的 CPU 百分比。
Elapsed (wall clock) time 0:00.00 实际经过的时间(墙钟时间),格式为 h:mm:ssm:ss
Average shared text size (kbytes) 0 平均共享文本段大小(KB)。
Average unshared data size (kbytes) 0 平均非共享数据段大小(KB)。
Average stack size (kbytes) 0 平均堆栈大小(KB)。
Average total size (kbytes) 0 平均总大小(KB)。
Maximum resident set size (kbytes) 2456 最大驻留内存大小(KB)。
Average resident set size (kbytes) 0 平均驻留内存大小(KB)。
Major (requiring I/O) page faults 0 需要 I/O 的主要页错误次数。
Minor (reclaiming a frame) page faults 113 重新分配帧的次要页错误次数。
Voluntary context switches 1 自愿上下文切换次数。
Involuntary context switches 0 非自愿上下文切换次数。
Swaps 0 交换操作次数。
File system inputs 0 文件系统输入次数。
File system outputs 0 文件系统输出次数。
Socket messages sent 0 发送的套接字消息数。
Socket messages received 0 接收的套接字消息数。
Signals delivered 0 传递的信号数。
Page size (bytes) 4096 页面大小(字节)。
Exit status 0 命令的退出状态码。

5.4 将执行时间写入到文件中

使用-o选项将执行时间写入到文件中:

[root@openEuler-test ~]# /usr/bin/time -o aa.txt ping www.baidu.com -c 4
PING www.a.shifen.com (153.3.238.102) 56(84) bytes of data.
64 bytes from 153.3.238.102 (153.3.238.102): icmp_seq=1 ttl=53 time=14.8 ms
64 bytes from 153.3.238.102 (153.3.238.102): icmp_seq=2 ttl=53 time=14.2 ms
64 bytes from 153.3.238.102 (153.3.238.102): icmp_seq=3 ttl=53 time=14.3 ms
64 bytes from 153.3.238.102 (153.3.238.102): icmp_seq=4 ttl=53 time=15.0 ms

--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 14.212/14.590/14.991/0.320 ms
  • 查看该文件内容:
[root@openEuler-test ~]# cat aa.txt
0.00user 0.00system 0:03.05elapsed 0%CPU (0avgtext+0avgdata 2920maxresident)k
0inputs+0outputs (0major+144minor)pagefaults 0swaps

5.5 追加信息

使用-a选项,将/usr/bin/time命令的输出信息追加到aa.txt文件中,而不会覆盖该文件。

[root@openEuler-test ~]# /usr/bin/time -a -o aa.txt ls
aa  aa.txt  anaconda-ks.cfg  birthday-cake.jpg    gift.jpg  k8s.png  output.png  qrcode.svg  wordpress-4.9.1-zh_CN.tar.gz
[root@openEuler-test ~]# cat aa.txt
0.00user 0.00system 0:03.05elapsed 0%CPU (0avgtext+0avgdata 2920maxresident)k
0inputs+0outputs (0major+144minor)pagefaults 0swaps
0.00user 0.00system 0:00.00elapsed 0%CPU (0avgtext+0avgdata 2472maxresident)k
0inputs+0outputs (0major+115minor)pagefaults 0swaps

5.6 格式化时间输出

可参考以下命令,进行格式化时间输出。

/usr/bin/time -f "time: %U" ls

在这里插入图片描述

参数 描述
%E 实际经过时间(real time),显示格式为 [小时:]分钟:秒
%U 用户空间中的代码执行所花费的 CPU 时间(user time)。
%S 内核空间中的代码执行所花费的 CPU 时间(system time)。
%C 进行计时的命令名称及其命令行参数。
%D 进程非共享数据区域的大小,以 KB 为单位。
%x 命令退出状态码。
%k 进程接收到的信号数量。
%w 进程被交换出主存的次数。
%Z 系统的页面大小(page size),这是一个系统常量,不同系统中该值可能不同。
%P 进程所获取的 CPU 时间百分比,这个值等于 (user + system) 时间 / 总运行时间
%K 进程的平均总内存使用量(包括 data + stack + text),单位是 KB。
%W 进程主动进行上下文切换的次数,例如等待 I/O 操作完成。
%c 进程被迫进行上下文切换的次数(由于时间片到期)。

六、注意事项

  • 区分 Shell 内置 time 和 GNU time:确保你使用的是 /usr/bin/time 而不是 shell 内置的 time,以利用更多高级选项。
  • 使用 -o 选项重定向输出:使用 -o 选项将 time 的输出重定向到文件中,以便后续分析。
  • 自定义输出格式:使用 -f 选项自定义输出格式,以便获取更详细的资源使用信息。
  • 启用详细模式:使用 -v 选项启用详细模式,以获取所有资源使用信息。
  • 处理异常终止:使用 -q 选项来抑制关于异常程序终止的信息,如非零退出码或信号。
  • 检查系统路径:确保 /usr/bin/time 在你的 PATH 环境变量中,或者直接使用完整路径调用。
  • 注意时间精度:对于非常短的命令,time 可能无法提供高精度的时间测量,因为系统计时器有最小分辨率。
  • 理解百分比 CPU 使用率:CPU 使用率是基于 (user + system) / elapsed 计算的,对于极短的命令可能会显示为 100%。
  • 查看帮助和版本信息:使用 -h--help 查看帮助信息,使用 -V--version 查看版本信息。
相关文章
|
27天前
|
监控 网络协议 Unix
Linux系统之fuser命令的基本使用
Linux系统之fuser命令的基本使用
93 0
Linux系统之fuser命令的基本使用
|
27天前
|
机器学习/深度学习 人工智能 自然语言处理
2026测试人必备的"AI驯化"技能树:少了这个能力,简历直接被筛掉
2026年测试工程师正经历能力重构:从“写用例”迈向“驯化AI”。手工测试岗需求降47%,而懂AI Agent、Prompt工程、Skill封装、MCP协议与RAG知识工程的测试人才薪资高30%–50%,成大厂抢手对象。核心转变是——测试对象由确定性系统变为智能体,测试本质从“验功能”升级为“验能力”。
|
27天前
|
测试技术 调度 开发工具
一文读懂什么是 Subagent
Subagent是一种工程化模式,通过将复杂任务拆解为多个职责专一的子代理(如探索、编码、测试、审查),实现上下文隔离、权限最小化与并行执行,有效解决单Agent的上下文过载、职责混乱和工具权限过大等问题。
197 3
|
27天前
|
人工智能 安全 API
最新版通义千问(Qwen3.8-Max)功能介绍
在人工智能大模型技术快速迭代的当下,通义千问推出的Qwen3.8-Max凭借突破性的技术架构与全面升级的能力,成为大模型领域的全新标杆。作为通义千问系列迄今规模最大、能力最强的旗舰模型,Qwen3.8-Max以2.4万亿总参数的体量,结合前沿稀疏混合专家(MoE)架构,在保持高效推理的同时,实现了文本理解、代码生成、多模态交互、长周期任务执行等核心能力的跨越式提升,为个人用户、开发者与企业级应用提供了前所未有的AI能力支撑。
321 1
|
27天前
|
人工智能 编解码 JSON
ComfyUI AI漫剧工业化量产技术方案|基于FLUX+Wan2.2本地二次元短剧全链路落地教程
本方案基于ComfyUI本地部署,整合FLUX+Wan2.2轻量化模型,专治AI漫剧五大痛点:人设变脸、画风混乱、镜头闪烁、水印限制、量产成本高。支持8G显卡,实现风格统一、人设稳定、零水印、全自动批量成片,适配二次元短剧与自媒体创作。(239字)
|
27天前
|
人工智能 缓存 自然语言处理
深度解析 Qwen3.7-Flash:百万上下文 + 多模态感知,轻量 AI 的全能之选
在大模型从“单一文本交互”迈向“多模态融合+智能体执行”的时代,轻量化、高性价比成为AI落地的关键诉求。阿里云推出的Qwen3.7-Flash,作为Qwen3.7系列中的轻量型旗舰,凭借**低延迟、高吞吐、低成本**的核心优势,以及全面升级的多模态理解与智能体执行能力,重新定义了轻量级大模型的性能标准。它不仅保留了百万Token超长上下文的强大记忆能力,更在多模态感知、编码能力、智能体自治与推理效率上实现突破,成为个人开发者、中小企业与高并发场景的理想AI基座,兼顾能力与成本,让AI技术普惠化落地成为现实。
224 0
|
27天前
|
安全 小程序 开发者
最新版阿里云域名优惠口令及优惠口令获取方法
域名作为互联网的基础入口,是个人与企业数字化建设的核心资产,而域名注册、续费的成本控制,始终是站长、开发者与企业主关注的重点。阿里云作为国内领先的域名服务提供商,持续推出域名优惠口令,覆盖.com、.cn、.xin等主流后缀的注册、续费场景,帮助用户大幅降低域名持有成本。本文将全面梳理最新阿里云域名优惠口令、多渠道获取方法、详细使用步骤、核心使用规则,以及常见问题与避坑指南,让你快速掌握阿里云域名优惠口令的全流程操作,实现域名成本最优管控。
342 0
|
9月前
|
人工智能 运维 安全
|
9月前
|
存储 人工智能 编译器
智驾大模型的「隐形战场」:当GPU堆不动了,行业拼什么?
与参会嘉宾一起探讨了如何通过技术协作加速智能驾驶的进步,分享了各自在自动驾驶技术栈中的前沿实践与生态思考。