Я записал следующие два раза в файле журнала, который проверяет обратное соединение SSH когда-либо 5 минут. Если соединение снижается, оно записывает поломку и продолжает пытаться снова соединиться каждые 5 минут.
Я хочу вычислить различие между этими двумя разами. Я предполагаю, что процесс:
1) Преобразуйте их в метку времени.
2) Минус один от другого.
3) Отобразите результат.
BROKEN: Jun 29 16:15:01 IST 2017
RESTARTED: Jun 29 16:15:21 IST 2017
Как я преобразовываю вышеупомянутое в упомянутую метку времени? Или я смотрю на это неправильным способом?
Основной способ использовать date
:
Извлечение дата от строки:
$ sed -n '/BROKEN/ s/BROKEN: //p' file
Jun 29 16:15:01 IST 2017
Преобразовывают во время эпохи
$ date -d "Jun 29 16:15:01 IST 2017" "+%s"
1498733101
Повторение и вычитают (у меня были некоторые разделяющие слово проблемы с этим форматом даты, таким образом, я просто подкровать команды все это. Возможно, существует более чистый путь):
$ 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
различие выходит в секундах, конечно...