Я записал следующие два раза в файле журнала, который проверяет обратное SSH-соединение каждые 5 минут. Если соединение не работает, он записывает поломку и продолжает пытаться подключиться каждые 5 минут.
Я хочу рассчитать разницу между этими двумя временами. Я предполагаю, что этот процесс:
1) Преобразуйте их в метку времени.
2) Минус один из другого.
3) Отобразите результат. [ ! d4] 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
Разница возникает в секундах, ...
Основной способ с использованием 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
Разница возникает в секундах, ...