shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Cálculo de tempo


From: Arkanon
Subject: Re: [shell-script] Cálculo de tempo
Date: Fri, 1 Oct 2010 18:13:58 -0300

Em 1 de outubro de 2010 15:22, Allan da Silva Donega
<address@hidden>escreveu:

>    Gostaria de saber se alguém tem algum script para fazer cálculo de
> tempo de
> execução.
>
> Exemplo:
>
> Meu script começa a execução num horário e termina em outro.
>
> Gostaria de um cálculo que fizesse datafim - datainicio
>
Eu tenho usado esse script (que é antigo, mas eu documentei agora):

<http://arkanon.pastebin.com/9jYc2qYt>

$ cat deltat
#!/bin/bash

# DeltaT
#   - Contagem de tempo entre processos
#   - Precisão de segundos
#   - Pode ser usado para contagem "aninhada" de tempo
#   - Aceita uma quantidade "offset" opcional de segundos
#   - Devolve:
#       a hora e o timestamp de início e fim da contagem
#       a variação de tempo em hh:mm:ss e em segundos
#
#   Arkanon <address@hidden>
#   2010/03/18 Qui 15:54:42 BRS
#
# EXEMPLO
#
#   Um script com:
#
#     time_1=$(deltat start)
#
#     echo "sleeping 3s..."
#     sleep 3
#
#     time_2=$(deltat start)
#     read -p "prompt: " p
#     echo -e "\nyou said: $p\n"
#     time_2=$(deltat stop "$time_2")
#     echo -e "$time_2\n"
#
#     time_1=$(deltat stop "$time_1")
#     echo -e "$time_1"
#
#   Devolve:
#
#     sleeping 3s...
#     prompt: oi
#
#     you said: oi
#
#     OFFSET    0
#      START    [2010/10/01 Sex 18:00:25 BRS]    1285966825
#        END    [2010/10/01 Sex 18:00:26 BRS]    1285966826
#      DELTA    00:00:01    1
#
#     OFFSET    0
#      START    [2010/10/01 Sex 18:00:22 BRS]    1285966822
#        END    [2010/10/01 Sex 18:00:26 BRS]    1285966826
#      DELTA    00:00:04    4

  fmt="[%Y/%m/%d %a %H:%M:%S %Z]\t%s"
  now=$(date +'%m/%d/%Y %H:%M:%S')
   ts=$(date -d "$now" +"%s")

  point=$1
  if [ "$point" = "start" ] && ( [ $# = 1 ] || [ $# = 2 ] )
  then
    [ $# = 2 ] && offset=$2 || offset=0
    echo -e "OFFSET    $offset"
    echo -e " START    "$(LANG=pt_BR date -d "$now" +"$fmt")
  else
    offset=$(echo "$2" | grep "OFFSET" | cut -f2)
       ts0=$(echo "$2" | grep "START"  | cut -f3)
    if [ "$point" = "stop" ] && [ $# = 2 ] && [ "$ts" -ge "$ts0" ]
    then
      diffts=$[$ts-$ts0+$offset]
      time_t=$diffts
      time_s=$[$time_t%60]
      time_t=$[$time_t/60]
      time_m=$[$time_t%60]
      time_h=$[$time_t/60]
      [ $time_s -le 9 ] && time_s="0$time_s"
      [ $time_m -le 9 ] && time_m="0$time_m"
      [ $time_h -le 9 ] && time_h="0$time_h"
      delta="$time_h:$time_m:$time_s"
      echo "$2"
      echo -e "   END    "$(LANG=pt_BR date -d "$now" +"$fmt")
      echo " DELTA    $delta    $diffts"
    else
      echo 'Usage: var=`deltat start [ts offset]`; cmd[; cmd; ...];
var=`deltat stop "$var"`; echo $var'
    fi
  fi

# [EOF]

-- 
(o_   ------------------     __o
//\   address@hidden   _`\<,
V_/_  --- www.lsd.org.br  (_)/(_)
---------------------------------


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]