首页/系统/Linux 运维命令速查/time 与计时诊断命令
性能与监控48 条

time 与计时诊断命令

time 给出命令的真实/用户/系统耗时:real≫user+sys 说明在等 IO/网络/锁;-v 展开上下文切换与缺页等细节。

Linux 运维命令速查系统更新于 2026-10-13

time 计时是什么

time 给出命令的三项耗时:真实经过的时间、用户态消耗的 CPU 时间、内核态消耗的 CPU 时间。判断性能瓶颈时这三者的关系比绝对值更有用——真实耗时远大于两项 CPU 之和,说明时间花在等待 IO、网络或锁上;两项之和接近真实耗时,说明是计算密集型。用独立的详细版本加展开选项,还能看到最大内存占用、缺页、上下文切换等细节,比手工计时信息量大得多。

基本信息

适用平台GNU/Linux、macOS(需区分内建关键字与独立程序)
两种形态shell 内建关键字、独立可执行程序
语法time 命令;独立版本加 -v 展开详情
常用选项-v 展开资源使用、-o 写入文件、-f 自定义格式
输出目标两种版本都写到标准错误
关键指标真实耗时、用户态时间、内核态时间

典型使用场景

  • 判断命令变慢是计算密集还是等待 IO。
  • 对比优化前后同一命令的耗时与资源消耗。
  • 评估脚本的资源需求,为容量规划提供依据。
  • 排查多线程程序的实际并行度是否达到预期。
  • 给性能测试留档:记录耗时、内存峰值与缺页情况。

常用写法

常用写法
time rsync -a /data/ /backup/                       # 内建版本,看三项耗时
time (sleep 1; echo done)                           # 对复合命令计时
/usr/bin/time -f '%e 秒 %M KB' ./batch-job.sh       # 自定义输出格式
/usr/bin/time -v ./app 2> /tmp/time.log             # 详细报告落盘
grep -E 'Elapsed|Maximum resident|page faults|context switches' /tmp/time.log
for i in 1 2 3; do time curl -sS -o /dev/null http://10.0.0.5/health; done   # 多次取稳定值
/usr/bin/time -v tar czf app.tar.gz /opt/app 2>&1 | grep Elapsed

指标读法

指标含义判断要点
真实耗时墙上时钟经过的时间用户实际感知的耗时
用户态时间用户态消耗的 CPU计算量指标
内核态时间内核态消耗的 CPU系统调用与内存管理开销
两者之和远小于真实耗时大量时间在等待指向 IO、网络、锁等待
最大常驻内存进程内存峰值评估内存需求
缺页与上下文切换额外开销细节频繁切换说明调度或锁竞争严重
shell 内建版本与独立可执行版本的参数不同:想要详细报告必须调用独立版本,很多精简系统默认没装,需要先安装对应软件包。
多线程或多进程时用户态时间可以远超真实耗时,这是并行的正常表现;用它估算并行度,而不是把三项相加当作总耗时。
计时输出走标准错误:在管道里直接接下游会把耗时信息丢掉,需要显式重定向到标准输出或文件。

易错点

  • 把真实耗时与 CPU 时间相加理解成总开销,结论毫无意义;三项指标要分开解读。
  • 在管道中计时却忘记重定向标准错误,耗时信息丢失,误以为命令没有输出。
  • 只用系统内建的版本却期望看到内存与缺页细节,得不到数据;详细指标需要独立版本。
  • 只测一次就下结论:耗时受缓存、负载、并发影响很大,要多次测量取稳定值。

数据来源与参考

  • man 1 time(GNU time)
  • bash 手册(保留字 time)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌