Вопрос или проблема
Как вручную установить дату и время на будущее в экземпляре 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, которая игнорирует специфические настройки системы:
-
Установите пакет NTP:
sudo apt-get install ntp
-
Откройте конфигурационный файл:
sudo nano /etc/ntp.conf
-
Добавьте сервер NTP, в зависимости от вашего местоположения. Например:
server 0.pool.ntp.org iburst
-
Перезапустите NTP-сервер:
sudo systemctl restart ntp
5. Использование Libfaketime
Если вы хотите, чтобы ваше приложение работало с определенным временем, возможно использование библиотеки Libfaketime
, которая может временно изменять системное время для конкретных приложений. Установите её следующим образом:
-
Установите библиотеку с репозитория (если доступно) или скомпилируйте её самостоятельно.
-
Используйте команду для работы с библиотекой:
LD_PRELOAD=/usr/local/lib/libfaketime.so.1 FAKETIME="2017-12-09 16:00:00" ваше_приложение
Таким образом, ваша программа будет выполнять свои задачи с указанным временем. Это может быть полезным для тестирования, как упоминалось ранее.
Итог
Комбинация вышеописанных методов позволит поддерживать желаемое время на вашем экземпляре EC2, избегая сброса по умолчанию. Убедитесь, что вы понимаете, как эти изменения влияют на вашу систему и приложения, и используйте наиболее соответствующий метод в зависимости от ваших потребностей. Следуя этим шагам, вы сможете эффективно управлять временем в своем экземпляре EC2.
Поддерживая эти советы, вы сможете обеспечить точность времени на вашем сервере, что критично для тестирования и функционирования приложений.