Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Windows98/ME > shell 的两个 "time"
【标  题】:shell 的两个 "time"
【关键字】:shell,time
【来  源】:http://www.cublog.cn/u/23408/showart.php?id=255522

shell 的两个 "time"

Your Ad Here

shell 的两个 "time"

Created: Fang lungang 03-08-2007 Modified: Fang lungang 03-08-2007 22:04>

“time” 是 unix 下的一个工具,但同时也是 bash 等 shell 的关键字。两者都 是来测量时间,所以以前一直没注意到其实有两个“time”。

两者最明显的区别是输出格式不同,但更深层次的区别是:作为外部命令的 time, 被测量的程序名是 time 的参数,time 负责来调用相应的程序; 而作为关键字的 time 则是用来修饰测量的命令(准确的说应该是管道),我的理解是不论有没有 time 对被测试程序本身的运行方式没有影响。

time 作为 shell 关键字还有一个优点(引自 man page ):

The use of `time' as a reserved word permits the timing of shell builtins, shell functions, and pipelines. An external `time' command cannot time these easily.

由于两者本质的不同,导致相同的命令形式产生的结果却不太一样。以下是一些例 子。

输出格式的差异

[/home/lungangfang/tmp]type -a time
time is a shell keyword
time is /usr/bin/time
[/home/lungangfang/tmp]./a.out
stdout of program
stderr of program
[/home/lungangfang/tmp]time ./a.out
stdout of program
stderr of program

real 0m0.001s
user 0m0.000s
sys 0m0.000s
[/home/lungangfang/tmp]/usr/bin/time ./a.out
stdout of program
stderr of program
0.00user 0.01system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (82major+11minor)pagefaults 0swaps
[/home/lungangfang/tmp]
输出重定向行为的差异

关键字的输出重定向:

 [/home/lungangfang/tmp]time ./a.out 2> time.out
stdout of program

real 0m0.021s
user 0m0.000s
sys 0m0.000s

[/home/lungangfang/tmp]cat time.out
stderr of program

[/home/lungangfang/tmp](time ./a.out) 2> time.out
stdout of program

[/home/lungangfang/tmp]cat time.out
stderr of program

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

外部命令的输出重定向:

[/home/lungangfang/tmp]/usr/bin/time ./a.out 2> time.out
stdout of program

[/home/lungangfang/tmp]cat time.out
stderr of program
0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (82major+12minor)pagefaults 0swaps

[/home/lungangfang/tmp]/usr/bin/time -o time.out ./a.out
stdout of program
stderr of program

[/home/lungangfang/tmp]cat time.out
0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 0maxresident)k
0inputs+0outputs (81major+15minor)pagefaults 0swaps
人心惟危,道心惟微,惟精惟一,允执厥中:【上一篇】
基于SOAP协议的Web服务的消息路由机制:【下一篇】
【相关文章】
  • shell 的两个
  • BLP ch2:shell编程
  • Linux下在shell中启动gnome-terminal来运行程序
  • 如何修改镜像镜像连接超时值mirroring_connection_timeout
  • 关于ORA-04021得解决办法(timeout occurred while waiting to lock object)
  • java 调用 shell 脚本
  • java 调用 shell 得到返回值
  • java 调用 shell 得到返回值(二)
  • 客户端计时器控件(clientTimer)的c#源码
  • 用JNI实现高精度的Java计时器(Java Timer)
  • 【随机文章】
  • 关于一个邮件服务器有多个域名时反解问题
  • linux防火墙iptables学习笔记
  • 读书笔记--软件工程 实践者的研究方法(二)
  • 使用更安全的C字符串操纵 (snprintf)----转载
  • Scott Mitchell的ASP.NET2.0教程
  • [Image] 将实现RenderedImage接口的图像对象序列化
  • ip的划分,超详细.[经典]
  • 为常量定义合适的类型
  • good article
  • 为类型信息使用特征类
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.