zoukankan      html  css  js  c++  java
  • time命令的使用

    time命令可以获取一个程序的执行时间(实际运行时间real time, 程序运行在用户态时间user time, 内核的时间sys time),real!=user+sys,即程序不占用cpu也统计时间。而user+sys是程序占用cpu的总时长,因此real>=user+sys

    $vi time.sh

      for i in $(seq 1 3); do

      sleep 1

      done

    $time ./test

       real 3.01

     user 0.00

        sys 0.01

    实际时间增加了,但是cpu的使用时间并没有变

    time -p ls      #使用-p参数可以将时间以秒数的方式打印出来

    遇到问题: time命令进行重定向

      time cmd > time.txt       #没有工作,时间仍然被打印到stderr

      time cmd 2> time.txt      #时间仍书在控制台

    why?

    问题原因:time是bash中的保留字,不同于bash的内建命令,但是命令行语法的真正部分(同if  while),一个pipeline相当都作为一个单独的进程执行(即,一个子shell),time的输出并不附加到命令的stderr,而是由shell本身在上层实际输出,time关键字激活一个标志,并且在整个管道命令执行之后,时间信息被打印到stderr,time高于整个命令以及所有的管道和重定向(在命令末尾添加重定向将解释为命令的一部分)

    问题解决:

      { time cmd; } 2> time.txt

      { time cmd >/dev/null 2 &> 1; } 2> time.txt      #将cmd的标准输出和标准错误重定向到/dev/null,抑制本身的输出

  • 相关阅读:
    小作业(# 求1-2+3-4+5 ... 99的所有数的和)
    小作业(3、输出 1-100 内的所有奇数 4、输出 1-100 内的所有偶数)
    小作业(求1-100的所有数的和)
    作业小练习(使用while循环输入 1 2 3 4 5 6 8 9 10)
    keepalived介绍
    nginx日志文件配置
    Nginx配置文件编写实例
    Nginx部署流程
    nginx服务介绍
    http协议原理介绍
  • 原文地址:https://www.cnblogs.com/yieli/p/7905847.html
Copyright © 2011-2022 走看看