Cálculo de diferença entre datas

1. Cálculo de diferença entre datas

Perfil removido
removido

(usa Nenhuma)

Enviado em 25/04/2012 - 15:36h

Prezados, boa tarde! Estou iniciando em Shell Script e estou quebrando a cabeça para calcular a diferença de tempo entre duas datas. Consultei diversos fóruns e não encontro onde estou errando.

Vamos lá...

Eu extraio uma string de data de um arquivo de log, este comando está dentro de um while:

horaerro="$(echo $LINHA | cut -c1-17)"

resultado: horaerro=19/03/12 08:32:45

__________________

Tenho uma variável $data que traz o momento atual:

data=`date +"%d/%m/%y %H:%M:%S"`

__________________

Tentei primeiro da maneira mais óbvia, subtraindo as duas datas, mas sem sucesso.
Tentei transformar minha váriavel $horaerro em segundos, através do comando %s, mas acredito que não aceite outra data que não seja do date, enfim, criei o seguinte:

convherro=`date +%s --date="$horaerro"`
Resultado:
date: 0551-402 Invalid character in date/time specification.
Usage: date [-u] [+"Field Descriptors"]
convherro=

_________________

Gostaria de uma orientação ou um caminho para que eu consiga avançar no meu script, que aliás, é bem simples, mas estou quebrando a cabeça... Segue abaixo meu código para quem interessar, desde já agradeço.

set -x

#formatação de data para nome do log
ano=`date +%Y`
mes=`date +%m`
dia=`date +%d`

#nome do aruivo
arquivo="kernel"$ano$mes$dia"*.log"

#caminho dos arquivos
strorig="/home/txxxxx/eu/"$arquivo;
strdest="/home/txxxxx/eu/XXXX.log";
tempfile="/home/txxxxx/eu/tempfile.txt";

#formatação de data
data=`date +"%d/%m/%y %H:%M:%S"`

horaerro=0
#verifica se o log existe
if [ -e $strorig ]
then
grep "Erro .Erro writeDB .ORA-" "$arquivo" >> $tempfile

grep "Erro .Erro writeDB .ORA-" "$arquivo" > /dev/null 2>&1

if [ $? <> 0 ]

then

while read LINHA

do

horaerro="$(echo $LINHA | cut -c1-17)"

convherro=`date +%s --date="$horaerro"`
data=$($data +%s)

#dialog="$(echo $horaerro | cut -c1-2)"
#meslog="$(echo $horaerro | cut -c4-5)"
#anolog="$(echo $horaerro | cut -c6-9)"

#diftempo=$data-$horaerro

if [ $diftempo -lt 900 ]

then

echo $data "E XXXX Mensagem de erro existente na log" $arquivo

fi

done < $tempfile

fi


else

#grava a informação no tivoli.log caso o arquivo não exista.
echo $data "W XXXX Arquivo de log não encontrado na data de hoje" "$data"

fi


#HeartBeat
echo $data "I XXXX Heart Beat - Check de execução ok."




  


2. Re: Cálculo de diferença entre datas

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 25/04/2012 - 19:00h

Cara .. se o seu sistema operacional tiver o %s para o date ... ai é bem fácil, se não ... não é tão facil, pois tem que calcular virada de dia, de mês e ano bissexto, pra ter certeza que dá certo


aqui vai o link do script que fiz pro solaris (que não tem o %s). Nos comentários do mesmo script tá o que fiz pro debian (que tem o %s), vc vai ver que diferença!!!

http://www.vivaolinux.com.br/script/Calculo-de-intervalo-de-tempo

Abs







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts