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 查看版本信息。
相关文章
|
5天前
|
存储 弹性计算 缓存
阿里云服务器租赁费用:新版租赁收费标准及活动报价参考
本文更新了2026年阿里云全系列云服务器租赁活动报价,所有特惠资源均可前往阿里云活动中心选购,整体覆盖从个人入门到企业级高性能场景的全梯度需求。其中轻量应用服务器主打极致性价比,2核2G峰值200M带宽配置每日10点、15点限时抢购价仅38元/年,2核4G配置379元/年起;高性价比的经济型e实例、通用算力型u2i实例覆盖2核4G至4核32G全档位,适配开发测试与中小型企业业务;搭载英特尔至强6处理器的第九代c9i企业级实例算力较上代提升20%,支撑高并发生产环境,不同实例规格价差清晰,用户可根据自身业务负载与预算灵活选型。
1572 112
|
12天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1939 8
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
6天前
|
人工智能 程序员 API
Codex 接入 DeepSeek-V4-Flash:还能补上识图,提供两套方案
Codex 接入 DeepSeek-V4-Flash 怎么配?本文覆盖 CLI 与桌面端,再用 qwen3-vl-flash 补识图,两套方案可直接照做
|
6天前
|
编解码 人工智能 安全
2核4G/4核8G/8核16G阿里云服务器如何选择实例?经济型e、通用算力型u2i与计算型c9i选哪个?
本文介绍了阿里云2核4G、4核8G、8核16G三档主流配置下经济型e、通用算力型u2i和计算型c9i三种实例的最新活动价格与适用场景。同配置下三者价差显著,以2核4G为例,经济型e低至599.93元/年,计算型c9i则高达1742.08元/年。文章详细解析了各实例的性能定位:经济型e适合轻负载入门场景,u2i兼顾稳定算力与性价比,c9i凭借第9代至强处理器与芯片级安全能力支撑高性能业务。同时提示用户可叠加满减优惠券享受折上折,建议根据业务负载与预算综合决策。
526 112
|
18天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
2559 4
|
10天前
|
存储 人工智能 关系型数据库
阿里云AI产品与云产品最新组合套餐:Token Plan、AI coding及云服务器和建站等组合优惠价
阿里云推出全新“算力+模型+应用”一站式云与AI组合套餐活动,覆盖从个人开发者到中大型企业的全场景需求。核心亮点为分三档定价的Token Plan订阅服务,支持Qwen3.8-Max-Preview大模型调用,错峰时段最低可享0.2折优惠。活动同步推出AI Coding、智能体部署、云电脑托管、0代码建站等十余类场景化组合,搭配99元/年的普惠云服务器、88元/年的入门数据库等经典特惠产品,还为企业提供1V1定制化AI转型方案,大幅降低了不同用户群体拥抱AI的技术门槛与采购成本。
720 111
|
20天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2634 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
6天前
|
人工智能 JSON Shell
2026AI漫剧本地全开源方案(附各个软件模型链接),8G显卡也能流畅运行
这是一套完全本地化部署的AI漫剧生成技术链路:涵盖LLM剧本分镜生成、FLUX文生图(IP-Adapter人脸锁定)、StoryDiffusion时序连贯控制、LTX-2.3唇形同步视频生成,及ComfyUI全流程调度。零云端费用,仅耗硬件算力,单集2–4小时可产出竖屏短视频,适配抖音/B站分发。
|
7天前
Qoder 一周年 × Qwen3.8-Max 正式上线,多重好礼限时领
8月3日,Qwen3.8-Max 正式上线Qoder,迎来Qoder一周年。新老用户可领800次免费调用,下单再赠2000次;夜间(22:00–08:00)调用5折;邀请好友双方得积分与调用额度。
446 1

热门文章

最新文章