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?
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 ...