System time/ru

Системное время использует системные часы и Article description::используется в Unix системах для слежения за временем. Его можно установить с помощью аппаратных часов или с помощью внешнего сервера времени.

Программные или аппаратные часы
Системные часы, предоставляемые ядром, реализуются простым подсчетом числа секунд, прошедших с 1 января 1970 года 00:00:00 UTC по настоящее время. Это число называется Unix-время.

Аппаратные часы, также известные как часы реального времени (real-time clock или RTC), обычно представляют из себя элемент материнской платы. Они работают все время, независимо от состояния операционной системы, даже когда компьютер выключен.

UTC или местное время
Настройка времени аппаратных часов может быть осуществлена исходя из двух стандартов: локальное время или время UTC. Локальное время — это реальное время часового пояса, учитывающее переход на DST. Предпочтительно использовать UTC, поскольку системное время вычисляется посредством прибавления к нему разницы времени часового пояса с учётом летнего времени. Благодаря этому перевод часов на летнее время учитывается автоматически, а изменение часового пояса возможно без изменения значения аппаратных часов. Исключение может быть сделано при использовании систем с двойной загрузкой, когда одна операционная система не поддерживает или не настроена для аппаратных часов с UTC (по умолчанию Windows настроена на использование локального времени).

Time zone
Для поддержания правильного исчисления времени необходимо выбрать соответствующий часовой пояс, чтобы системе было известно её текущее местоположение.

OpenRC
See Timezone (AMD64 Handbook).

systemd
systemd comes with the command to manage the time zone:

Проверка текущего часового пояса:

Вывод доступных часовых поясов:

Чтобы изменить часовой пояс, пример для Германии:

LC_TIME
This environment variable defines formatting of dates and times. For more details see The GNU C Library

System clock
Обычно время системных часов устанавливается аппаратными часами во время загрузки системы. Также системные часы возможно установить вручную либо с помощью сервера сетевого времени.

Для изменения системного времени можно воспользоваться командой :

Вывод текущего времени программных часов:

To set the system clock, e.g. 12:34, May 6, 2016:

Time server
Смотрите статью NTP, чтобы получить информацию по использованию сервера времени.

systemd
systemd существует команда для управления системным временем:

Вывод текущего времени программных часов:

Установка системного времени:

Hardware clock
Чтобы получить доступ к аппаратным часам, нужно собрать ядро со следующими включенными параметрами:

Следующая команда выводит текущее на данный момент время аппаратных часов:

Следующая команда устанавливает время аппаратных часов в соответствии с системным временем:

Syncing the hardware clock and system time
Обычно аппаратные часы используются при загрузке для установки системного времени. Это может быть осуществлено ядром самостоятельно, либо с помощью загрузочного сервиса init-скрипта при загрузке. Завершение работы ядра или сервиса также может вызвать сохранение времени системных часов в аппаратные часы. Благодаря этому у системы будет правильное время при следующей загрузке.

Синхронизация с помощью ядра
On a sufficiently modern kernel (3.9 or newer), Linux can be configured to handle setting the system time automatically. To do so, enable the Set system time from RTC on startup and resume ( CONFIG_RTC_HCTOSYS ) and Set the RTC time based on NTP synchronization ( CONFIG_RTC_SYSTOHC ) kernel options:

The Set the RTC time based on NTP synchronization kernel option is currently supported by chrony, NTP and OpenNTPD since version 5.9p1.

To check if the hardware time is updated, install and run:

The 64 bit of the reported number should be unset (0). More information in man pages (search '11 minute mode').

OpenRC
При использовании OpenRC для установки системного времени во время загрузки и синхронизации аппаратных часов во время завершения работы можно воспользоваться init-скриптом. Данная сервис включен по умолчанию и должен быть отключен при использовании вышеуказанного способа синхронизации ядром. Скрипт не следует запускать при использовании часов реального времени ядра.

If however there is a need for using the OpenRC, set both clock_hctosys and clock_systohc to  in. By default the service is configured for UTC time standard. To change to localtime add.

Перезапустите сервис и добавьте его init-скрипт в уровень запуска boot:

systemd
Для установки системного времени во время загрузки можно использовать systemd. Для управления аппаратными часами используйте команду :

Вывод текущего времени аппаратных часов:

Следующая команда устанавливает аппаратные часы в соответствии с системным временем (в стандарте времени UTC):

Следующая команда устанавливает аппаратные часы в соответствии с системным временем в стандарте времени localtime (местное время):

Dual booting with Windows
Systems that dual boot with another operating system, such as Windows, generally have a struggle over the hardware clock. To make Windows not adjust the hardware clock back to local time, add the following registry entry.

For 64-bit Windows, open then browse to. Create a new QWORD entry called RealTimeIsUniversal, then set its value to. Reboot the system. The clock should now be in UTC time.

Смотрите также

 * Network Time Protocol
 * NTP - An implementation of the Network Time Protocol.
 * chrony - A versatile implementation of the Network Time Protocol.
 * OpenNTPD - Lightweight NTP server ported from OpenBSD.

Ссылки

 * https://lifehacker.com/5742148/fix-windows-clock-issues-when-dual-booting-with-os-x - Dual booting with MS Windows, set RealTimeIsUniversal. Also tested with Windows 10.
 * http://tldp.org/HOWTO/Clock-2.html - The Clock Mini-HOWTO.