|
|||||||
Как временно установить дату и время в Debian Linux 9 и вернуть обратно
Время создания: 02.04.2020 20:51
Автор: xintrea
Текстовые метки: linux, время, установка, настройка
Раздел: Компьютер - Linux - Bash - Установка времени в Linux
Запись: xintrea/mytetra_syncro/master/base/15858498768oelheutky/text.html на raw.github.com
|
|||||||
|
|||||||
С некоторых пор, в ОС Linux традиционно, по-дефолту, устанавливается и активизируется служба сетевой синхронизации времени. Поэтому все старые рецепты по временному изменению даты и времени не работают. Пользователь пытается установить системное время (sys), пытается настроить аппаратные часы (hardware clock, hc), пытается засинхронизировать их всеми возможными способами, но у него ничего не получается. В этой заметке описывается, как на время установить нужную системную дату и время, а потом вернуть часы обратно. * * * Вначале нужно понять, какие настройки времени заданы в системе. Все команды необходимо производить под суперпользователем. Просмотр настроек времени: # timedatectl status Local time: Пт 2020-04-03 00:14:14 MSK Universal time: Чт 2020-04-02 21:14:14 UTC RTC time: Чт 2020-04-02 17:37:21 Time zone: Europe/Moscow (MSK, +0300) Network time on: yes NTP synchronized: yes RTC in local TZ: no Здесь видно, что и получение времени по сети включено (Network time on), и синхронизация по NTP (NTP synchronized) тоже включена. Далее нужно понять, как заблокировать синхронизацию по NTP. Справка показывает следующее: # timedatectl help timedatectl [OPTIONS...] COMMAND ... Query or change system time and date settings. -h --help Show this help message --version Show package version --no-pager Do not pipe output into a pager --no-ask-password Do not prompt for password -H --host=[USER@]HOST Operate on remote host -M --machine=CONTAINER Operate on local container --adjust-system-clock Adjust system clock when changing local RTC mode Commands: status Show current time settings set-time TIME Set system time set-timezone ZONE Set system time zone list-timezones Show known time zones set-local-rtc BOOL Control whether RTC is in local time set-ntp BOOL Enable or disable network time synchronization Последняя опция управляет синхронизацией по NTP. Таким образом, отключить синхронизацию можно так: # timedatectl set-ntp false # timedatectl status Local time: Пт 2020-04-03 00:15:16 MSK Universal time: Чт 2020-04-02 21:15:16 UTC RTC time: Чт 2020-04-02 17:38:23 Time zone: Europe/Moscow (MSK, +0300) Network time on: no NTP synchronized: yes RTC in local TZ: no Хм, похоже, что программисты что-то напутали, и синхронизация не отключилась. Зато отключилось "сетевое время" Network time on. Поэкспериментировав, можно прийти к выводу (возможно, неправильному), что в этом месте творится какая-то дичь. В любом случае, несмотря на то, что в статусе написано NTP synchronized: yes , синхронизация на самом деле отключена, и поэтому можно устанавливать новое время. И оно будет нормально применено. Дату и время можно установить следующей командой: # timedatectl set-time "2020-04-02 20:35:00" Проверка установленного времени: # date Чт апр 2 20:35:05 MSK 2020 Все, новая дата/время установились, и можно поработать в системе с этим новым временем. Чтобы вернуть время как было, надо дать команду: # timedatectl set-ntp true Если после этой команды сразу, в течении нескольких секунд, посмотреть настройки времени, то можно увидеть странное: # timedatectl status Local time: Пт 2020-04-03 00:54:23 MSK Universal time: Чт 2020-04-02 21:54:23 UTC RTC time: Чт 2020-04-02 18:11:14 Time zone: Europe/Moscow (MSK, +0300) Network time on: yes NTP synchronized: no RTC in local TZ: no Вот так сюрприз, теперь все наоборот: "сетевое время" включено, а синхронизация по NTP отключена. Что такое? Ведь команда была на включение NTP-синхронизации! Похоже, что проблема в том, что настройка применяется не сразу. Если подождать пол-минуты, то настройки времени придут в норму, и время снова будет выставленно точно, по сети. # timedatectl status Local time: Пт 2020-04-03 00:56:23 MSK Universal time: Чт 2020-04-02 21:56:23 UTC RTC time: Чт 2020-04-02 21:56:23 Time zone: Europe/Moscow (MSK, +0300) Network time on: yes NTP synchronized: yes RTC in local TZ: no * * * И напоследок: в современных Линуксах остались команды:
... но они не работают так, как описано во многих устаревших статьях в Интернете. При включенной службе синхронизации времени по сети (NTP), эти команды будут молча срабатывать, но их действие будет сразу же нивелировано службой синхронизации времени. К сожалению, об этой особенности в старых статьях не рассказывается. |
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|