Сделать изменение даты постоянным в EC2

Вопрос или проблема

Как вручную установить дату и время на будущее в экземпляре EC2 и сделать это постоянным, чтобы они не сбрасывались после перезагрузки?

Я могу изменить дату с помощью этой команды:

$ sudo timedatectl set-time "2017-12-09 16:00:00"
$ timedatectl 
      Локальное время: Суб 2017-12-09 16:00:01 UTC
  Всемирное время: Суб 2017-12-09 16:00:01 UTC
        Время RTC: Суб 2017-12-09 16:00:02
       Часовой пояс: Etc/UTC (UTC, +0000)
 Сетевая синхронизация: нет
Синхронизировано по NTP: нет
 RTC в локальном TZ: нет

ОС на EC2:

$ lsb_release -a
Модули LSB отсутствуют.
ID дистрибьютора: Ubuntu
Описание:    Ubuntu 16.04.3 LTS
Версия:    16.04
Кодовое имя:   xenial

Что еще мне нужно сделать, чтобы это стало постоянным?

Цель этого изменения – установить дату на будущее, чтобы я мог протестировать несколько вещей.

Вы можете настроить ntp для вашего экземпляра.

Установите пакет ntp

apt-get/yum install ntp

Отредактируйте конфигурацию

nano /etc/ntp.conf

Добавьте сервер ntp в конфигурационный файл, в зависимости от страны, в которой вы живете, найдите подходящий сервер (просто гуглите “ваше_имя_страны ntp сервер”). В зависимости от вашей ОС, конфигурационный файл может содержать сервер вместо пула или наоборот.

server/pool 0.ntp_server_в_вашей_стране iburst

Перезапустите и включите демон ntpd.

systemctl enable ntpd && systemctl start ntpd

ntp будет следить за тем, чтобы у вас было правильное время каждый раз, когда вы перезапускаете сервер, потому что он синхронизирует время с сервером.

Libfaketime, если загружен с вашим приложением, может добавлять сдвиги или устанавливать конкретные времена как текущее время. Это может работать лучше, чем установка системной смены.

Тем не менее, он также может установить системное время, если вам это нужно.

Основное использование:

LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="2017-12-09 16:00:00" commandyouneed

Ответ или решение

Чтобы значительно изменить дату и время на экземпляре EC2 и сделать эти изменения постоянными, следует учитывать несколько ключевых моментов. В этом ответе разбирается процесс установки даты на будущее и его сохранения, включая использование различных методов для достижения желаемого результата.

1. Установка времени вручную

Вы уже используете команду timedatectl, чтобы установить дату и время:

sudo timedatectl set-time "2017-12-09 16:00:00"

Однако, важно понимать, что такие изменения могут быть временными и сбрасываются после перезагрузки, если не предпринять дополнительных шагов.

2. Отключение NTP

Если ваша система подключена к NTP (Network Time Protocol), она будет синхронизировать время со временем сервера, что приведет к сбросу ваших изменений. Для отключения NTP выполните следующие команды:

sudo timedatectl set-ntp false

Это предотвращает автоматическую синхронизацию времени.

3. Настройка RTC

В некоторых системах время может зависеть от аппаратных часов (RTC). Убедитесь, что ваш RTC установлен правильно, используя команды:

sudo hwclock --set --date="2017-12-09 16:00:00"
sudo hwclock --hctosys

Эти команды установят аппаратные часы системы на запрашиваемую дату.

4. Использование пакета NTP

Если вы всё-таки хотите использовать NTP, но с учетом ваших требований, рассмотрите возможность установки специальной версии NTP, которая игнорирует специфические настройки системы:

  1. Установите пакет NTP:

    sudo apt-get install ntp
  2. Откройте конфигурационный файл:

    sudo nano /etc/ntp.conf
  3. Добавьте сервер NTP, в зависимости от вашего местоположения. Например:

    server 0.pool.ntp.org iburst
  4. Перезапустите NTP-сервер:

    sudo systemctl restart ntp

5. Использование Libfaketime

Если вы хотите, чтобы ваше приложение работало с определенным временем, возможно использование библиотеки Libfaketime, которая может временно изменять системное время для конкретных приложений. Установите её следующим образом:

  1. Установите библиотеку с репозитория (если доступно) или скомпилируйте её самостоятельно.

  2. Используйте команду для работы с библиотекой:

    LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="2017-12-09 16:00:00" ваше_приложение

Таким образом, ваша программа будет выполнять свои задачи с указанным временем. Это может быть полезным для тестирования, как упоминалось ранее.

Итог

Комбинация вышеописанных методов позволит поддерживать желаемое время на вашем экземпляре EC2, избегая сброса по умолчанию. Убедитесь, что вы понимаете, как эти изменения влияют на вашу систему и приложения, и используйте наиболее соответствующий метод в зависимости от ваших потребностей. Следуя этим шагам, вы сможете эффективно управлять временем в своем экземпляре EC2.

Поддерживая эти советы, вы сможете обеспечить точность времени на вашем сервере, что критично для тестирования и функционирования приложений.

Оцените материал
Добавить комментарий

Капча загружается...