#linux #shell #date
#linux #оболочка #Дата
Вопрос:
Есть ли опция функции даты?
Как мне заставить LOAD_TEST_START быть на 2 минуты вперед?
Как мне вернуть LOAD_TEST_END на 2 минуты назад?
LOAD_TEST_START=$(date -u %FT%TZ)
LOAD_TEST_END=$(date -u %FT%TZ)
Комментарии:
1. Получите эпоху в секундах, добавьте / вычтите 120 секунд, а затем используйте команду date для установки этих переменных.
Ответ №1:
Этот ответ помог мне и работает на linux-версии date
.
LOAD_TEST_START=$(date %FT%TZ -d "2 minutes ago")
LOAD_TEST_END=$(date %FT%TZ -d "2 minutes")
На macos / FreeBSD можно использовать
LOAD_TEST_START=$(date -v 2M %FT%TZ)
LOAD_TEST_END=$(date -v-2M %FT%TZ)
Комментарии:
1. Я получил сообщение об ошибке в модуле, но предложенная вами команда работает на моем терминале MAC $ LOAD_TEST_START=$(date -v 1M % FT% TZ) дата: недопустимый параметр — ‘v’. Версия ядра: 5.4.89 Операционная система: Alpine Linux v3.13 (контейнерный) Тип: linux Архитектура: x86_64
2. Простите, я виноват. Я обновлю ответ.
Ответ №2:
Не уверен, что это то, что вы хотите, но вы можете получить текущее значение эпохи, а затем добавить / вычесть из него 120 секунд (2 минуты) и преобразовать результаты обратно в дату.
dateval=`date %s`
echo "orig "`date -d @$dateval %FT%T%Z`
start=`expr $dateval 120`
end=`expr $dateval - 120`
LOAD_TEST_START=`date -d @$start %FT%T%Z`
LOAD_TEST_END=`date -d @$end %FT%T%Z`
echo "start "$LOAD_TEST_START
echo "end "$LOAD_TEST_END