【问题标题】:parsing time command in perl [closed]在perl中解析时间命令[关闭]
【发布时间】:2013-12-16 20:41:27
【问题描述】:

当我发出命令 /usr/bin/time script.sh 时,它当然会因负载而随时间变化(有时可能是 10 秒,有时可能是 2 分钟),问题是我需要通知时间执行时间高于 30 秒(也可能包括分钟..),如果为 20-30 秒则发出警告。 捕获请求阈值的所有时间值的最佳方法是什么:

/usr/bin/time ./script.sh | awk'/real/ {print $2}' 
30.0
/usr/bin/time ./script.sh | awk'/real/ {print $2}'
1:24.2
/usr/bin/time ./script.sh | awk'/real/ {print $2}' 
3.1

【问题讨论】:

    标签: regex perl solaris


    【解决方案1】:

    鉴于以下警告阈值:

    • 严重: 30 秒或更长时间
    • 警告: 20 秒到 30 秒
    • OK:不到 20 秒

    根据您机器上 /usr/bin/time 的输出,它似乎使用 hh:mm:ss.d 格式,并带有可选的小时和分钟位置:

    my $time = `/usr/bin/time ./vladtest.sh | awk '/real/ {print $2}'`
    my $status;
    if ($time =~ /^[01]?\d\./) {       # time is 0-9 seconds or 10-19 seconds
        $status = "OK";
    }
    elsif ($time =~ /^(2\d|30)\./) {   # time is 20-30 seconds
        $status = "WARNING";
    }
    else {                             # any other time is critical
        $status = "CRITICAL";
    }
    

    【讨论】:

    • 感谢 qwrrty 这个正则表达式工作得很好,
    • 我也可以在 if、elsif 和 else 之后添加另一行来打印例如(命令的关键执行时间为 50.12 秒)?
    • 当然,不知道为什么。
    • hm 我仍然有这个问题似乎这个正则表达式不解析任何关键的东西..
    猜你喜欢
    • 1970-01-01
    • 2011-09-24
    • 2010-10-26
    • 1970-01-01
    相关资源
    最近更新 更多