Script para marcar tempo

1. Script para marcar tempo

César Rocha
cesroc

(usa Debian)

Enviado em 28/02/2009 - 14:40h

Eu estou fazendo uma ferramenta em Shell para um trabalho da faculdade, a ferramenta já está pronta, mas eu queria acrescentar a marcação de tempo em que ela ficou executando. Como faço para que o script marque o tempo em que ficou rodando?


  


2. Re: Script para marcar tempo

João Gabriel
joao_15

(usa Arch Linux)

Enviado em 28/02/2009 - 15:00h

Se eu fosse vc eu tentava assim:

pegue a hora em que começou e jogue para uma variável, hora_inicio
ao final do programa jogue a hora atual para, hora_final

depois subtraia hora_final - hora_inicial..

assim deve funcionar... é só uma ideia..

PS. Nunca tentei isso...


3. Re: Script para marcar tempo

nelio
neliobjr

(usa Red Hat)

Enviado em 28/02/2009 - 15:22h

Achei que era mais facil e cheguei a fazer o scriptzinho, porem deparei com problema quando o tempo era maior que 1 minuto, ou uma hora, e achei a solução convertendo para timestamp e depois voltando o timestamp para hora, como segue abaixo, ta funfando beleza...

Qualquer problemas posta ai

#!/bin/sh

data_inicio=`date +%s`
# seu script
sleep 120

data_fim=`date +%s`
resultado=`expr $data_inicio - $data_fim`

echo demorou `date -d '1/1/1970 +'$resultado' seconds' +%H%M%S`




4. Re: Script para marcar tempo

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 28/02/2009 - 16:16h

O joao_15 deu uma ótima idéia! Vc pode fazer assim:

- Dê o "date" antes e depois d iniciar o script, mas a saída dele vc deve pegar apenas o valor do horário. Ou vc pode pegar através do cut ou deve existir algum parâmetro no date q mostre só o horário;
- Depois vc faz um cálculo d subtração. Pode ser com o comando "expr". Não sei quanto dura seu script, mas se durar mais d 1 min, fica difícil fazer o cálculo, sendo q no 60 seg torna-se 1 min...

A partir dae acho q vc consegue!



5. Re: Script para marcar tempo

César Rocha
cesroc

(usa Debian)

Enviado em 28/02/2009 - 19:07h

as idéias foram ótimas sim...consegui fazer aqui...existe um parâmetro sim... %H para hora, %M para minuto e %S para segundo...só estou com um probleminha novo...o segundo as vezes dá negativo, gostaria de saber como faço para pegar o valor positivo só...tipo em C quando faço a=-2, ai faço abs(a) e retorna 2...como faço isso em SHELL?
aguardo...vlws pela ajuda...


6. Re: Script para marcar tempo

nelio
neliobjr

(usa Red Hat)

Enviado em 01/03/2009 - 11:22h

Ola, bom dia.

Desculpa te falar assim, mas infelizmente não tem outro jeito, que é, vc não entendeu o que renato_pacheco e eu te dissemos, os parametros que vc se refere %H%M%S, estão no script, e como o renato disse, o problema é quanto passa de 1 minuto ou quando começa o script proximo de "virar" o minuto, ex., 57, 58 segundos, ou por isso da negativo e por isso transformei em timestamp.

Vamos a uma conta

pegando a hora de agora: date +%H%M%S
# 110001
pegando a hora daqui 80 segundos: date +%H%M%S
# 110121

se vc simplesmente subtrair os tempos que vc recebeu terá 120 segundos e não 80.
pq na artimética, todas as nossas contas são feitas com 100 e não com 60 como nos segundos, uma opção seria tirar esses 40 a mais que é o que falta para a artimetica dos 100, mas teriamos o problema quanto a hora estivesse para mudar, assim:

pegando a hora de agora: date +%H%M%S
# 115901
pegando a hora daqui 80 segundos: date +%H%M%S
# 120021

você terá 4120 segundos, será que deu para entender, não sei se compliquei mais do que expliquei.rs

Resumindo.:

Pode até haver alguma maneira de fazer esta subtração de horas (tempo), mas a única maneira que conheço é a que fiz no script, usando timestamp.

até mais


7. Re: Script para marcar tempo

Denis Doria
thuck

(usa Debian)

Enviado em 01/03/2009 - 14:07h

Pq vc não usa o comando time?

time <shell>; e ele mostrará quantos segundos o comando demorou p/ terminar.


8. Re: Script para marcar tempo

Jeferson dos Santos
lordhulk

(usa Ubuntu)

Enviado em 01/03/2009 - 18:44h

como o thuck disse, usa o time.

time meuscript.sh

quando o programa terminar, ele vai dar uma saida assim:

real 0m0.060s
user 0m0.030s
sys 0m0.020s

Eu sempre uso pra saber quanto tempo demora pra eu compilar um programa ou o kernel


9. Re: Script para marcar tempo

nelio
neliobjr

(usa Red Hat)

Enviado em 01/03/2009 - 23:56h

o time não funcionará se eu quiser saber quanto cada parte do meu script demorou, ex.

Tenho um usuario oracle, que eu "starto" um script no shell que chama varios scripts oracle, que são iniciados e finalizados, todos dentro do script shell, com time não tenho como saber quanto tempo demorou cada parte do meu script oracle

Script_shell

um_monte_de_comando do script_oracle1

outro_monte_de_comando do script_oracle2

outro_monte_de_comando do script_oracle3

outro_monte_de_comando do script_oracle4

fim do script shell


10. Re: Script para marcar tempo

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 18/03/2009 - 19:21h

César, você perguntou como tirar o sinal negativo da sua variável ABCD (por exemplo) ... para isso use:

ABCD=`echo $ABCD | sed -e 's/-//'`


11. Re: Script para marcar tempo

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 04/01/2010 - 11:34h

Na verdade o parâmetro é %s (minúsculo) e não %S (maiúscula). Agora algumas distro não tem o %s, se for o caso avisa, se não usa isso:

#/bin/sh
# ROTINA DE VARIACAO DE SEGUNDOS ENTRE DUAS DATAS
# Codigo pertence a Comunidade
# VOL (Viva o Linux)
#-------------------------------------------------------
# Primeira versao: Davison Pasqualini
# 30/12/2009 fdmarp
#-------------------------------------------------------

data_inicial=`echo $1 | awk -F/ '{ print $2"/"$1"/"$3 }'`
data_final=`echo $3 | awk -F/ '{ print $2"/"$1"/"$3 }'`
hora_inicial=$2
hora_final=$4
data_seg1=`date +%s --date="$data_inicial $hora_inicial"`
data_seg2=`date +%s --date="$data_final $hora_final"`
resultado=`expr $data_seg2 - $data_seg1`
echo $resultado







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts