xml地图|网站地图|网站标签 [设为首页] [加入收藏]

您的位置:澳门赌搏网站大全 > 计算机网络 > shell脚本示例:计算毫秒级、微秒级时间差

shell脚本示例:计算毫秒级、微秒级时间差

发布时间:2019-11-24 06:14编辑:计算机网络浏览(107)

    正文首要介绍如何在CentOS7意况下集成Apache和SVN,达成后能够由此浏览器访谈SVN客栈.

    bash&shell种类著作:http://www.cnblogs.com/f-ck-need-u/p/7048359.html**

    1.查看系统遇到,关闭防火墙和SELinux.


     1 [root@Docker /]# systemctl status firewalld.service
     2 ● firewalld.service - firewalld - dynamic firewall daemon
     3    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
     4    Active: inactive (dead)
     5      Docs: man:firewalld(1)
     6 [root@Docker /]# getenforce
     7 Disabled
     8 [root@Docker /]# uname -a
     9 Linux Docker 3.10.0-693.21.1.el7.x86_64 #1 SMP Wed Mar 7 19:03:37 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
    10 [root@Docker /]# cat /etc/redhat-release 
    11 CentOS Linux release 7.4.1708 (Core) 
    12 [root@Docker /]# 
    

    奇迹须求总括命令的实行时间长短,能够接收time命令,固然time命令能够准确到飞秒级,但time命令不能测算一群命令的奉行时间。能够平昔运用date命令总计命令实施前后的年月差,但一向动用date命令总计时间差只可以准确到秒级。由此,要总括阿秒级大概飞秒级的时长,供给对date命令的结果开展意气风发番乘除调换。

    2.设置软件包和Apache SVN模块.

    本文只交付了纳秒级时间差的猜度格局,若要计算阿秒级时间差,对剧本稍作更改即可。

    1  yum install httpd mod_dav_svn subversion
    

    本子如下:

     3. 验证安装结果.

    #!/bin/bash
    ###########################################################
    #  description: get msec level time delay                 #
    #  author     : 骏马金龙                                   #
    #  blog       : http://www.cnblogs.com/f-ck-need-u/       #
    ###########################################################
    
    # filename: msec_diff.sh
    
    function timediff() {
    
    # time format:date  "%s.%N", such as 1502758855.907197692
        start_time=$1
        end_time=$2
    
        start_s=${start_time%.*}
        start_nanos=${start_time#*.}
        end_s=${end_time%.*}
        end_nanos=${end_time#*.}
    
        # end_nanos > start_nanos? 
        # Another way, the time part may start with 0, which means
        # it will be regarded as oct format, use "10#" to ensure
        # calculateing with decimal
        if [ "$end_nanos" -lt "$start_nanos" ];then
            end_s=$(( 10#$end_s - 1 ))
            end_nanos=$(( 10#$end_nanos   10**9 ))
        fi
    
    # get timediff
        time=$(( 10#$end_s - 10#$start_s )).$(( (10#$end_nanos - 10#$start_nanos)/10**6 ))
    
        echo $time
    }
    
    #start=$(date  "%s.%N")
    # Now exec some command
    #end=$(date  "%s.%N")
    # here give the values
    start=1502758855.907197692
    end=1502758865.066894173
    
    timediff $start $end
    
    1 [root@Docker /]# httpd -version
    2 Server version: Apache/2.4.6 (CentOS)
    3 Server built:   Apr 20 2018 18:10:38
    4 [root@Docker /]# svnserve --version
    5 svnserve, version 1.7.14 (r1542130)
    6 compiled Apr 11 2018, 02:40:28
    

     奉行该脚本:

    4.验证Apache SVN模块是还是不是安装成功,需求检讨mod_dav_svn.so和mod_authz_svn.so文件.

    [root@xuexi ~]# bash microsecond_diff.sh
    9.159
    
    1 [root@Docker modules]# pwd
    2 /etc/httpd/modules
    3 [root@Docker modules]# ll | egrep "mod_dav_svn.so|mod_authz_svn.so"
    4 -rwxr-xr-x 1 root root  19504 Apr 11 10:44 mod_authz_svn.so
    5 -rwxr-xr-x 1 root root 181344 Apr 11 10:44 mod_dav_svn.so
    

    足见结果准确到了阿秒级。

    shell脚本示例:计算毫秒级、微秒级时间差。5.用到svnadmin命令成立SVN旅舍repos.

    剧本表达:

     1 [root@Docker /]# mkdir /var/www/svn
     2 [root@Docker /]# cd /var/www/svn/
     3 [root@Docker svn]# svnadmin create repos
     4 [root@Docker svn]# tree -d repos/
     5 repos/
     6 ├── conf
     7 ├── db
     8 │   ├── revprops
     9 │   │   └── 0
    10 │   ├── revs
    11 │   │   └── 0
    12 │   ├── transactions
    13 │   └── txn-protorevs
    14 ├── hooks
    15 └── locks
    16 
    17 10 directories
    

    (1).为了总结飞秒级时间差,所以选择date "%s.%N"格式。当中"%s"是总结从一九六九-01-01 00:00:00到这段日子时刻点通过的总秒数,所以计算多个"%s"的差值就总结出了八个时间点的秒级时间差。"%N"是各样时间点的飞秒部分,由于date命令中不能直接得到确切到飞秒的时刻,因而只能通过阿秒来计算并改动,于是三个时间点的"%N"就足以测算出阿秒级的光阴差。

    6.改过repos目录属主和属组为apache.

    但必要注意的是,总括微秒时间差时要思谋是或不是要将1秒调换到10^9皮秒,以作保阿秒相减时一定获得正数值。

    1 [root@Docker svn]# chown -R apache:apache repos/
    2 [root@Docker svn]# ll
    3 total 4
    4 drwxr-xr-x 6 apache apache 4096 May 15 16:57 repos
    

    (2)."%N"的微秒部分假若长度小于9,将以0补齐。举个例子999飞秒,将补齐为000000999。但在数学计算时,以0开端的数值暗许会被充作八进制计算,因而要求强行保险它以10进制总结,供给运用"10#"。数学表明式相关内容参见man bash的Arithmetic Evaluation部分。

    7.复制/var/www/svn/repos/conf 下的权柄管理文件authz到 /var/www/svn下,并创设客户认证文件passwd,并且安装隐蔽属性.

    (3).由于date命令获取到的%s和%N在同一字符串内,由此供给将其分割开来,在上述脚本中动用的是变量切分的点子。

    1 [root@Docker svn]# cp /var/www/svn/repos/conf/authz /var/www/svn/
    2 [root@Docker svn]# cd /var/www/svn/repos
    3 [root@Docker repos]# touch .passwd
    

    8.透过htpasswd命令创建SVN客商svnuser并将客户消息保存在passwd文件中.

    本文由澳门赌搏网站大全发布于计算机网络,转载请注明出处:shell脚本示例:计算毫秒级、微秒级时间差

    关键词: www.4355.com