Вычислить разницу во времени между двумя

Я записал следующие два раза в файле журнала, который проверяет обратное SSH-соединение каждые 5 минут. Если соединение не работает, он записывает поломку и продолжает пытаться подключиться каждые 5 минут.

Я хочу рассчитать разницу между этими двумя временами. Я предполагаю, что этот процесс:

1) Преобразуйте их в метку времени.

2) Минус один из другого.

3) Отобразите результат. [ ! d4] BROKEN: Jun 29 16:15:01 IST 2017 RESTARTED: Jun 29 16:15:21 IST 2017

Как мне преобразовать вышеуказанное значение в временную метку? Или я смотрю на это не так?

2
задан 30 June 2017 в 14:29

2 ответа

Основной способ с использованием 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

Разница возникает в секундах, ...

6
ответ дан 18 July 2018 в 10:53

Основной способ с использованием 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

Разница возникает в секундах, ...

6
ответ дан 24 July 2018 в 19:40

Другие вопросы по тегам:

Похожие вопросы: