Синхронизация времени в Linux
Синхронизация времени в Linux
Правильная синхронизация времени в Linux — залог корректной работы преимущественного большинства приложений и сервисов, что особенно касается тех инструментов, которые хоть как-то связаны с интернетом. Во всех дистрибутивах данной операционной системы за синхронизацию даты и времени отвечает специальная утилита. Она находится в активном состоянии по умолчанию, поэтому у пользователей нет необходимости как-то ее настраивать или изменять. Однако иногда такая надобность все же появляется из-за разных причин, например, случайных сбоев. Сегодня мы хотим рассмотреть принцип этой конфигурации и смену сервиса синхронизации на более привычный для многих юзеров.
Клиент времени.
В файле /etc/ntp.conf для клиента важны строки Server. Их может быть несколько — до 10 штук!
Сколько добавлять? Следует иметь в виду:
- Если у вас только один сервер (одна строка server), то если данный сервер начнёт врать, то вы будете слепо следовать за ним. Если его время убежит на 5 секунд и вы убежите в след за ним.
- Если добавлено 2 сервера (2 строки server), то NTP пометит их обоих как false tickers. Если один из них будет врать, то NTP не может понять кто врёт, так как нет кворума.
- Если добавлено 3 и более сервера времени, то можно вычислить одного вруна false tickers. Если серверов времени 5 или 6, то можно найти 2 вруна false tickers. Если серверов 7 или 8, то 3 false tickers. Если серверов 9 и 10, то 4 false tickers.
Настройка клиентов сервера времени
Если вам нужно только синхронизировать ваши часы при загрузке машины, вы можете воспользоваться утилитой Консольная утилита ntpdate для синхронизации времени. Это может подойти для некоторых настольных машин, которые часто перезагружаются и только требуют изредка синхронизироваться, но на большинстве машин должен работать ntpd.
Правим /etc/ntp.conf для того чтобы синхронизация производилась с нашим сервером.
и запустить службу, предварительно настроив ./etc/ntp.conf(см. выше)
Как работает синхронизация времени через Интернет?
Синхронизация времени производится посредством специального протокола передачи данных — NTP (Network Time Protocol). Этот протокол включает в себя набор сложных алгоритмов, которые позволяют с большой точностью синхронизировать время (до тысячных миллисекунд расхождения).
Есть более упрощенная версия этого протокола — SNTP (Simple Network Time Protocol), который используется в сетях, где не требуется высокая точность синхронизации (до 1 сек. расхождения).
Вся модель синхронизации времени NTP выглядит в виде дерева. В «кроне» этого дерева находятся «первичные сервера». Таких серверов во всем мире несколько штук. На них чаще всего установлены атомные часы и другие дорогостоящие хронометры. Синхронизировать время с «первичными» серверами у Вас не получится либо из-за их большой загруженности, либо из-за ограничения самими серверами.
«Вторичные» сервера синхронизируются с серверами первого уровня посредством протокола NTP. Расхождение по времени между ними достигает порядка 20 миллисекунд. Таких серверов значительно больше и поэтому целесообразней настраивать синхронизацию именно с ними.
После этого могут идти сервера третьего, четвертого уровня и т. д., к которым чаще всего относятся сервера синхронизации времени различных провайдеров и других IT-компаний.
Принудительная синхронизация времени ntp
01 июл 2019, 14:49
Как везде пишут, уже в Ubuntu 18.04, соответственно и в Mint 19, синхронизация времени осуществляется через systemd.
Действительно, при запросе systemctl is-active ntpd выдаётся inactive. То есть, при синхронизации времени система не смотрит на etc/ntp.conf, а должна руководствоваться настройкой timesyncd.
В своём посте systemd-timesyncd в Linux Mint Chocobo уквзывал, что настройка timesyncd осуществляется через файл /etc/systemd/timesyncd.conf Однако все строки моего файла закомментированы:
Возможно, это связано с тем, что dhcp моего роутера вместе с серверами DNS выдаёт клиентам 2 сервера NTP: 62.149.2.62 и 62.149.2.126, соответствующие ntp1.colocall.net и ntp2.colocall.net (при выборах получается, что ответ от ntp2.colocall.net приходит чуть-чуть быстрее и время синхронизируется по нему). Глубинного механизма или conf, в котором бы клиенту компьютера были явно указаны серверы NTP от dhcp мной найдено не было. При этом получаемые от dhcp DNS серверы найдены в /run/systemd/resolve/resolv.conf
Как пишут, ntpq – это инструмент запросов для ntpd. Флаг –p запрашивает данные о серверах NTP, к которым подключается ntpd. Запрос ntpq -p также выдаёт результат, в котором указан сервер NTP, с которым часы компьютера были синхронизированы:
Частные вопросы по синхронизации времени в Linux Mint 19
01 июл 2019, 16:05
Частные вопросы по синхронизации времени в Linux Mint 19
01 июл 2019, 17:19
Также NTP сервера могут быть предусмотрены в systemd-networkd конфигурации с опцией NTP= или динамически через DHCP сервер.
- Приоритетно — с любого интерфейса NTP серверов, полученных из конфигурации systemd-networkd.service(8) или через DHCP.
- Сервера NTP, указанные в /etc/systemd/timesyncd.conf будут добавлены в список интерфейса после получения ответа от серверов в процессе соединения с ними.
- Если после выполнения действий выше информация о серверах NTP не будет получена, то будет использоваться имя хоста и IP адреса, указанные в FallbackNTP=.
Частные вопросы по синхронизации времени в Linux Mint 19
01 июл 2019, 18:22
Ситуация получилась любопытная.
На запрос timedatectl timesync-status получен ответ Unknown operation timesync-status
На запрос systemctl is-active ntpd получен ответ inactive
На запрос systemctl is-active systemd-timesyncd получен ответ inactive
На запрос timedatectl получен ответ:
На запрос ntpstat получен ответ:
synchronised to NTP server (62.149.2.126) at stratum 3
time correct to within 83 ms
polling server every 1024 s
При вызове System Manager (ПО управления службами через GUI, но на git этого ПО уже нету):
Судя по галочке справа ntp и аналогично крестику в отношении systemd-timesyncd, работает, всё-таки, ntpd.
systemd-timesyncd помечена как активная (галочка слева), но в данный момент не работающая.
ntpd помечена как активная и работающая.
Выходит, что предположение о переводе синхронизации времени в Linux Mint 19 на systemd неверное ?
При переключении на просмотр логов найдено, что ntpd была запущена (через какое-то время после старта системы):
В итоге имеется 2 предположения:
а) имеющийся Linux Mint 19.1 пока находится в «промежуточном» варианте и в будущем синхронизация времени разработчиками может быть переведена на systemd без «телодвижений» со стороны пользователя;
б) картина обусловлена тем, что продолжает использоваться Network Manager. Если бы были осуществлены мероприятия по перенастройке получения адреса через systemd, то это, возможно, «потянуло» бы за собой необходимость и полной перенастройки синхронизации времени через systemd.
Служба времени Windows не работает. Синхронизация времени завершается с ошибкой
Windows
Мы уже видели, как изменить интервал обновления времени Windows в Интернете. Но, возможно, ваше Windows Time неправильно и не синхронизируется, или вы не можете настроить параметры Windows Internet time для автоматической синхронизации с сервером времени в Интернете, например, time.windows.com . Хотя вы можете вручную синхронизировать время, нажав Обновить сейчас , вы можете обнаружить, что он просто не делает этого автоматически.
Прежде чем приступить к устранению неполадок, было бы неплохо запустить проверку системных файлов. Для этого вы должны ввести sfc/scannow в CMD с повышенными правами и нажать Enter. Подождите некоторое время, и когда работа будет завершена, перезагрузите компьютер с Windows. Как только вы это сделаете, мы можем двигаться дальше, чтобы попытаться устранить проблему синхронизации времени Windows.
Синхронизация времени Windows не работает
Чтобы изменить настройки времени, нажмите кнопку «Время» в правой части панели задач и выберите настройки даты и времени. Настройки синхронизации находятся на вкладке Интернет-время.
Служба Windows Time не работает
Если у вас неверное время в Windows 10, в первую очередь нужно выяснить, установлен ли для Службы времени Windows значение «Автоматически и запущено», иначе может появиться сообщение об ошибке: Windows Служба времени не работает .
Для этого введите services.msc в поле Начать поиск и нажмите Enter. В диспетчере служб перейдите к службе времени Windows и дважды щелкните ее.
Проверьте и посмотрите, запущен ли он и установлен ли на Автоматический. Если нет, измените тип запуска на Автоматический и нажмите Применить/ОК.
Если это работает, отлично, запустите сервис и выйдите. Это должно быть концом ваших проблем. Если нет, и вы получаете сообщения об ошибках – читайте дальше!
Служба Windows Time не запускается с ошибкой 1079
Если вы обнаружите, что служба времени Windows не запускается с Ошибка 1079 , вы можете убедиться, что служба запускается с помощью учетной записи локальной системы, а не учетной записи локальной службы (NT AUTHORITY LocalService ). Подробнее об этом здесь .
Система не может найти указанный путь
Появляется сообщение об ошибке: Системе не удается найти указанный путь .
В таком случае, вы можете перерегистрировать файл DLL. Соответствующий файл DLL – это w3time.dll . Для этого откройте командную строку от имени администратора, введите regsvr32 w32time.dll и нажмите Enter.
Если это работает, хорошо, еще вы все еще получаете это сообщение?
Модуль w32time.dll был загружен, но произошел сбой вызова DllRegisterServer с кодом ошибки 0x80070003
Затем вы также можете зарегистрировать соответствующий файл Windows Time , который называется W32tm.exe, и посмотреть, поможет ли это!
W32tm.exe , расположенный в папке System32, используется для настройки параметров службы времени Windows. Он также может быть использован для диагностики проблем со службой времени. W32tm.exe является предпочтительным средством командной строки для настройки, мониторинга или устранения неполадок службы времени Windows. Вы можете проверить все его параметры здесь на TechNet.
Мы будем использовать параметр /register . Этот параметр при запуске для W32tm.exe регистрирует службу времени для запуска в качестве службы и добавляет конфигурацию по умолчанию в реестр.
Для этого в командной строке с повышенными правами введите эти команды одну за другой и нажмите Enter:
Принудительно синхронизировать время с помощью CMD
Вы также можете заставить Windows синхронизировать время, используя W32tm.exe. W32tm.exe – это строка командной строки, используемая для настройки, мониторинга или устранения неполадок службы времени Windows на ПК с Windows 10.
Для этого откройте командную строку с повышенными правами и введите следующие команды одну за другой:
Перезагрузите компьютер и посмотрите, помог ли он.
Посмотрите, поможет ли это решить вашу проблему … если нет … вздох … вы можете снова получить сообщение при регистрации w32tm.exe:
Произошла следующая ошибка: система не может найти указанный путь. (0x80070003)
Убедитесь, что вы вошли в систему как администратор и открыли командную строку как администратор – но вы можете получить ошибку, даже если вы выполнили эти требования.
В таком случае вам придется открыть редактор реестра .
Открыв regedit, перейдите к следующему разделу реестра:
HKLM HKEY_LOCAL_MACHINE SYSTEM CurrentControl услуги TapiSrv
Теперь на правой панели щелкните правой кнопкой мыши ImagePath и выберите Modify. Здесь, в поле «Значение», убедитесь, что это значение:
% SystemRoot% System32 svchost.exe -k NetworkService
Нажмите OK и выйдите.
Надеюсь, что-нибудь поможет!
Если ничего не помогает, используйте другой сервер времени, воспользуйтесь бесплатным программным обеспечением для синхронизации времени или попробуйте восстановить/сбросить/переустановить Windows и посмотрите, поможет ли он вам. Если вы не хотите рассматривать этот последний вариант, я могу дать вам только один практический совет: снимите флажок Синхронизировать с сервером времени в Интернете , установите время вручную, а затем отметьте его один раз в какое-то время!
Как установить NTP-сервер
Чтобы установить NTP-сервер в вашей системе Ubuntu, откройте терминал и выполните следующую команду:
Чтобы убедиться, что установка прошла гладко, запустите
Вывод
После этого обновите систему, используя команду ниже
После успешного обновления системы проверьте, работает ли NTP, используя команду ниже
Чтобы убедиться, что NTP работает должным образом, выполните команду ниже
Эта команда запрашивает и отображает пулы серверов NTP, к которым подключен ntpd.
Вывод
How to Set Time, Timezone and Synchronize System Clock Using timedatectl Command
The timedatectl command is a new utility for RHEL/CentOS 7/8 and Fedora 30+ based distributions, which comes as a part of the systemd system and service manager, a replacement for old traditional date command used in sysvinit daemon based Linux distributions.
The timedatectl command allows you to query and change the configuration of the system clock and its settings, you can use this command to set or change the current date, time, and timezone or enable automatic system clock synchronization with a remote NTP server.
In this tutorial, am going to take you through the ways you can manage time on your Linux system by setting the date, time, timezone, and synchronize time with NTP from the terminal using the new timedatectl command.
It is always a good practice to maintain the correct time on your Linux server or system and it can have the following advantages:
- maintain a timely operation of system tasks since most tasks in Linux are controlled by time.
- the correct time for logging events and other information on the system and many more.
How to Find and Set Local Timezone in Linux
1. To display the current time and date on your system, use the timedatectl command from the command line as follows:
In the screencast above, RTC time is the hardware clock time.
2. The time on your Linux system is always managed through the timezone set on the system, to view your current timezone, do it as follows:
3. To view all available timezones, run the command below:
4. To find the local timezone according to your location, run the following command:
5. To set your local timezone in Linux, we will use the set-timezone switch as shown below.
It is always recommended to use and set the coordinated universal time, UTC.
You need to type the correct name timezone otherwise you may get errors when changing the timezone, in the following example, the timezone “Asia/Kolkata” is not correct therefore causing the error.
How to Set Time and Date in Linux
6. You can set the date and time on your system, using the timedatectl command as follows:
Set Time in Linux
To set time only, we can use a set-time switch along with the format of time in HH:MM:SS (Hour, Minute, and Seconds).
You may get the below error when setting the date as shown above:
7. The error says that the NTP service is active. You need to disable it using the below command.
Set Date and Time in Linux
8. To set date and time, we can use a set-time switch along with the format of date in YY:MM:DD (Year, Month, Day) and time in HH:MM:SS (Hour, Minute, and Seconds).
How to Find and Set Hardware Clock in Linux
9. To set your hardware clock to coordinated universal time, UTC, use the set-local-rtc boolean-value option as follows:
First Find out if your hardware clock is set to local timezone:
Set your hardware clock to local timezone:
Set your hardware clock to coordinated universal time (UTC):
Synchronizing Linux System Clock with a Remote NTP Server
NTP stands for Network Time Protocol is an internet protocol, which is used to synchronize the system clock between computers. The timedatectl utility enables you to automatically sync your Linux system clock with a remote group of servers using NTP.
Please note that you must have NTP installed on the system to enable automatic time synchronization with NTP servers.
To start automatic time synchronization with a remote NTP server, type the following command at the terminal.
To disable NTP time synchronization, type the following command at the terminal.
Summary
These are very easy examples described in this tutorial and I hope you will find them helpful for setting various Linux system clocks and timezones. To learn more about this tool, head over to timedatectl man page.
If you have anything to say about this article, feel free to leave a comment for any more information to add. Stay connected to Tecmint.