web-dev-qa-db-fra.com

Calculer le décalage horaire entre deux fois

J'ai enregistré les deux fois suivants dans un fichier journal qui vérifie une connexion SSH inversée toutes les 5 minutes. Si la connexion est interrompue, il enregistre la rupture et continue à essayer de se reconnecter toutes les 5 minutes.

Je veux calculer la différence entre ces deux temps. Je suppose que le processus est:

1) Convertissez-les en timestamp.

2) Moins un de l'autre.

3) Affichez le résultat.

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

Comment convertir ce qui précède en horodatage? Ou est-ce que je regarde ça de la mauvaise façon?

2
denski

Manière de base en utilisant date:

Extraire la date de la ligne:

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

Convertir en époque

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

Répétez et soustrayez (j'ai eu quelques problèmes avec le fractionnement de Word avec ce format de date, alors je viens de commander le tout en subbed. Peut-être qu'il y a une méthode plus propre):

$ 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

La différence apparaît en quelques secondes bien sûr ...

6
Zanna