System time/ru

The system time backed by the system clock is used in Unix systems to keep track of time. It can be set by a hardware clock or by an external time server.

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

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

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

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

OpenRC
Часовые пояса находятся в каталоге в. Не используйте часовые пояса, так как их имена не означают ожидаемый пояс. Например, на самом деле является GMT+8. Для местного времени следует указывать часовой пояс «localtime».

После выбора нужного часового пояса укажите его в файле. Например, для Германии, следует добавить следующее:

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

systemd
В systemd существует команда для настройки часового пояса:

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

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

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

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

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

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

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

Установка нового системного времени, например на 17 декабря 2012 года в 12:30:

Сервер времени
Смотрите статью NTP для информации по использованию сервера времени.

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

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

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

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

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

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

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

Синхронизация с помощью ядра
В свежих версиях (3.9 и выше) ядро Linux можно сконфигурировать таким образом, чтобы оно устанавливало системное время автоматически. Чтобы добиться этого, необходимо включить параметры Set system time ... и Set the RTC time ...':

Please not that Set the RTC time based on NTP synchronization is not used by some NTP implementations. Supported NTP implementations include: (more information here) and  (more information in the NTP article). OpenNtpd does not support setting the hardware time and therefore should be avoided.

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

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

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

Однако, если необходимо синхронизировать время с помощью OpenRC, в файле для   и   следует установить значение в. По умолчанию служба настроена на стандарт UTC. Чтобы изменить её на использование стандарта местного времени (localtime) необходимо добавить.

Перезапустите службу и добавьте сценарий инициализации в уровень запуска boot:

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

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

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

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

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

 * NTP — другой способ управления системным временем с помощью протокола сетевого времени.

Ссылки

 * http://lifehacker.com/5742148/fix-windows-clock-issues-when-dual-booting-with-os-x - Двойная загрузка с MS Windows, установка RealTimeIsUniversal. Также работает с Windows 10.
 * http://tldp.org/HOWTO/Clock-2.html - The Clock Mini-HOWTO.