免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2975 | 回复: 9
打印 上一主题 下一主题

[其他] zsh 下面time read为什么没有输出时间统计? [复制链接]

论坛徽章:
3
天蝎座
日期:2013-12-10 19:37:11酉鸡
日期:2014-08-04 20:05:38双鱼座
日期:2014-08-09 21:53:54
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-08-11 13:59 |只看该作者 |倒序浏览
前段时间,由于看到关于zsh的介绍,感觉其补全什么的比bash强不少,就将默认的shell换成了zsh(配置文件使用oh-my-zsh).但是现在遇到一个问题,zsh下面执行time read后,并没有相应时间的统计。而切到bash下面是有的。有人知道是什么原因吗?

PS: 我一般用这个命令来当秒表进行一些计时,如果zsh下面这个命令用不了,有没有其他命令可以完成类似秒表的功能?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2014-08-11 16:13 |只看该作者
回复 1# 欧阳西风


    time read ?

论坛徽章:
3
天蝎座
日期:2013-12-10 19:37:11酉鸡
日期:2014-08-04 20:05:38双鱼座
日期:2014-08-09 21:53:54
3 [报告]
发表于 2014-08-11 16:33 |只看该作者
回复 2# blackold


    是的,在bash下面我只需要输入这个命令就相当于开始计时,按下enter相当于结束计时,然后就会显示相应的时间统计,例如:

  1. real        0m2.970s
  2. user        0m0.000s
  3. sys        0m0.000s
复制代码
那么我就知道刚刚运行了2.970s, 以此来达到秒表计时的目的。
但是在zsh当中,却没有任何的输出,不知道为啥。

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
4 [报告]
发表于 2014-08-12 09:56 |只看该作者
回复 3# 欧阳西风


    哦,还真没注意过这个问题。

    发现,time 内置命令,都没有输出。

    time (read) 有输出。

论坛徽章:
3
天蝎座
日期:2013-12-10 19:37:11酉鸡
日期:2014-08-04 20:05:38双鱼座
日期:2014-08-09 21:53:54
5 [报告]
发表于 2014-08-12 10:11 |只看该作者
回复 4# blackold


    这个原因我还没找到, 不过你说的time (read)确实是有输出的 我就先这么用着吧 有时间再查查到底是什么原因。

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
6 [报告]
发表于 2014-08-12 10:20 |只看该作者
回复 5# 欧阳西风


看样子是 zsh 的 time 只能计算子进程的时间。

time (read) 可以使因为 () 发起了一个子进程。

同样的

time echo 123   #没有输出
time { echo 123; }   #没有输出
time (echo 123)   #有输出
time /bin/echo 123   #有输出

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
7 [报告]
发表于 2014-08-12 11:07 |只看该作者
  1. # 可以获取子进程的时间
  2. time (echo "hello world")

  3. # 可以获取非 builtin 命令的时间
  4. time /bin/echo "hello world"
  5. time sleep 2

  6. # 可以用 /usr/bin/time 获取 builtin 命令的时间
  7. /usr/bin/time echo "hello world"
复制代码

论坛徽章:
3
天蝎座
日期:2013-12-10 19:37:11酉鸡
日期:2014-08-04 20:05:38双鱼座
日期:2014-08-09 21:53:54
8 [报告]
发表于 2014-08-12 12:20 |只看该作者
回复 6# ly5066113


    估计是这样了,我这边儿试了一下,跟你的输出确实是一样的。

论坛徽章:
3
天蝎座
日期:2013-12-10 19:37:11酉鸡
日期:2014-08-04 20:05:38双鱼座
日期:2014-08-09 21:53:54
9 [报告]
发表于 2014-08-12 12:31 |只看该作者
回复 7# Shell_HAT


    看来zsh的time跟bash的time确实是不一样啦,time可以获取 非builtin命令以及子进程的时间 这个应该确实是成立的,我试了一下这几种输出,也确实是这样的。
另外,我单独输入time来做了如下测试
zsh中的time的输出:

  1. shell  0.85s user 0.25s system 0% cpu 1:36:56.65 total
  2. children  8.65s user 6.15s system 0% cpu 1:36:56.65 total
复制代码
而bash中的time会有如下输出:


  1. real        0m0.000s
  2. user        0m0.000s
  3. sys        0m0.000s

复制代码
两个的输出也是不一样的

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
10 [报告]
发表于 2014-08-12 15:39 |只看该作者
回复 9# 欧阳西风

Bash builtin command & normal excute command

$ time echo 123
123

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

$ which time
/usr/bin/time

$ /usr/bin/time echo 123
123
0.00user 0.00system 0:00.02elapsed 16%CPU (0avgtext+0avgdata 2112maxresident)k
56inputs+0outputs (1major+176minor)pagefaults 0swaps

$ cat /etc/lsb-release
...
DISTRIB_DESCRIPTION="Ubuntu 12.04.5 LTS"

$ time /usr/bin/time echo 123
123
0.00user 0.00system 0:00.00elapsed 50%CPU (0avgtext+0avgdata 2112maxresident)k
0inputs+0outputs (0major+177minor)pagefaults 0swaps

real        0m0.044s
user        0m0.000s
sys        0m0.020s

$ time time echo 123
123

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

$ /usr/bin/time /usr/bin/time echo 123
123
0.00user 0.00system 0:00.01elapsed 30%CPU (0avgtext+0avgdata 2112maxresident)k
0inputs+0outputs (0major+177minor)pagefaults 0swaps
0.00user 0.01system 0:00.04elapsed 28%CPU (0avgtext+0avgdata 2112maxresident)k
0inputs+0outputs (0major+334minor)pagefaults 0swaps

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP