Calcula a diferença de tempo entre duas vezes

2

Gravei as duas vezes a seguir em um arquivo de log que verifica uma conexão SSH reversa de 5 minutos. Se a conexão estiver inativa, ela registra a quebra e continua tentando reconectar a cada 5 minutos.

Eu quero calcular a diferença entre esses dois tempos. Eu assumo que o processo é:

1) Converta-os em timestamp.

2) Menos um do outro.

3) Exibe o resultado.

BROKEN: Jun 29 16:15:01 IST 2017
RESTARTED: Jun 29 16:15:21 IST 2017

Como faço para converter o acima para o dito registro de data e hora? Ou estou olhando para isso de maneira errada?

    
por denski 30.06.2017 / 12:23

1 resposta

6

Forma básica usando date :

Extraia a data da linha:

$ sed -n '/BROKEN/ s/BROKEN: //p' file
Jun 29 16:15:01 IST 2017

Converter para o horário da época

$ date -d "Jun 29 16:15:01 IST 2017" "+%s"
1498733101

Repita e subtraia (eu tive alguns problemas de divisão de palavras com este formato de data, então eu apenas comandei a coisa toda. Talvez haja uma maneira mais limpa):

$ BROKEN=$(date -d "$(sed -n '/BROKEN/ s/BROKEN: //p' file)" "+%s")
$ RESTARTED=$(date -d "$(sed -n '/RESTARTED/ s/RESTARTED: //p' file)" "+%s")
$ echo $((RESTARTED-BROKEN))
20

A diferença sai em segundos, claro ...

    
por Zanna 30.06.2017 / 13:01