Как изменить часовой пояс в linux

Блог о системном администрировании. статьи о linux, windows, схд netapp и виртуализации.

Настройка времени

Как установить и изменить время в Windows

Способ 1

Пожалуй, наиболее очевидный и простой способ сделать это (в любой версии Windows) — щелкнуть правой кнопкой мышки (ПКМ) по отображаемому времени в правом нижнем углу экрана (), и в появившемся меню выбрать «Настройка даты и времени».

Настройка даты и времени (Windows 10)

После снять ползунки с автоматического определения времени и часового пояса и задать их вручную (особенно это полезно в том случае, если компьютер постоянно не подключен к интернету).

Текущая дата и время — Windows 10

Уточнение времени

Способ 2

Это универсальный способ! Сначала необходимо нажать на сочетание Win+R (появится окно «Выполнить») и использовать команду timedate.cpl. См. пример ниже.

timedate.cpl — настройка времени

Должно открыться окно настроек даты и времени — кликните по кнопке «Изменить…». После обновите необходимые вам данные…

Изменить дату и время

Способ 3

Если в Windows время изменить не получается (или она еще и не установлена даже ) — это можно сделать и через настройки BIOS (UEFI).

Как правило достаточно на основном (на первом) экране UEFI кликнуть по значку времени и установить то значение, которое вам нужно (я обычно раньше всегда ставил на +10 мин., чтобы никуда не опаздывать ).

BIOS (UEFI) — изменение времени

Теперь время будет спешить на 10 мин.

Как настроить синхронизацию (или отключить ее вовсе)

И так, для начала нужно использовать сочетание Win+R, и в окно «Выполнить» ввести команду timedate.cpl, нажать Enter.

Далее проверить свой часовой пояс (и уточнить его, если он установлен некорректно).

Изменить часовой пояс

Далее перейти во вкладку «Время по Интернету» и открыть окно изменения настроек.

Время по интернету — изменить

Далее установить галочку «Синхронизировать с сервером времени в Интернете», указать сервер и нажать OK (разумеется, если синхронизация у вас работает некорректно — лучше тогда снять эту галочку… ).

Синхронизация

Есть еще один универсальный способ отключить синхронизацию

Для этого необходимо открыть службы (сочетание Win+R, и команда services.msc ()).

Открываем службы — services.msc (универсальный способ)

В списке служб нужно найти «Службу времени Windows» и открыть ее.

Служба времени Windows

После перевести ее тип запуска в режим «отключена» и остановить ее работу. После этого синхронизация времени выполняться на ПК не будет!

Остановить!

Как изменить отображение: только часы и минуты, или дни недели с датой

В Windows можно немного по-разному представить отображение времени: с датой, с днями недели и пр. (см. скрин ниже, я спец. сделал 3 разных варианта).

Кстати, рекомендации ниже актуальны для ОС Windows 10…

Как отображать время в трее

Для настройки отображения:

  1. сначала необходимо нажать Win+R (для вызова «выполнить»), и воспользоваться командой intl.cpl;

  2. далее открыть доп. параметры, и в разделе «Дата» и «Время» поменять формат на тот, который нужен вам (более подробно  можете почитать здесь).

Как изменить отображение даты (времени)

Да, кстати, чтобы в Windows 10 отображалось не только время (но и дни недели, дата) — необходимо зайти в параметры ОС (Win+i) и в разделе «Персонализация / Панель задач» отключить использование маленьких кнопок на панели задач (эта штука на некоторых ноутбуках вкл. автоматически).

Использовать маленькие кнопки панели задач

Что делать, если время сбрасывается (слетает)

Причина 1

Наиболее частая причина сброса времени — это севшая батарейка на материнской плате компьютера (в среднем одна добротная батарейка живет ∼5-7 лет). Что характерно при этом: время слетает после отключения/перезагрузки ПК (в процессе работы — должно быть всё нормально…).

Как выглядит батарейка на мат. плате

Приобрести новую батарейку можно практически в любом компьютерном магазине (и даже заказать в Китае ).

Причина 2

Неправильно установленный часовой пояс. Из-за этого Windows при любых обновлениях устанавливает автоматически некорректное время.

Если авто-режим неправильно определяет ваш пояс — задайте его вручную (для Windows 10: сочетание клавиш Win+i —> Время и язык —> Дата и время —> Часовой пояс ).

Часовой пояс — Windows 10

Еще один вариант: сочетание Win+R — > команда timedate.cpl

Изменить часовой пояс

Причина 3

Дело также может быть в некорректной работе синхронизации (например, из-за каких-то системных сбоев ОС, или неправильно-установленного часового пояса, или, например, из-за использования устаревшей версии Windows (от народных «умельцев»)).

Чтобы исправить подобную проблему: уточните часовой пояс и измените . Если не поможет — отключите синхронизацию и установите время вручную (как это сделать — см. чуть выше в статье ).

Разумеется, по теме — только приветствуются!

Всего доброго!

Настройка времени, часового пояса и синхронизация в Debian 8.6

Во время первоначальной установки Debian мы конфигурируем часовой пояс с помощью пакета tzdata. В дальнейшем синхронизация времени и часового пояса можно выполнить командами:

Tzdata

Стрелками выбираем Европа и нажимаем Enter.

Также выбираем часовой пояс.

В результат синхронизация получаем универсальное (время по Гринвичу) и местное время.

Конфигурационный файл хранится в /etc/timezone. Открыть файл можно с помощью команды:

Кроме того, соответствующий файл данных находится в каталоге /usr/share/zoneinfo и копируется в /etc/localtime, этот файл содержит правила, регулирующие дату летнего или зимнего времени для стран, которые его используют.

В компьютере два источника времени: на материнской плате аппаратные часы — «CMOS » и в ядре операционной системы, контролируемые серверами времени через сеть. На практике существует проблема, так как часы CMOS является не более чем счетчиком и не содержат никакой информации о часовом поясе.

Проблема возникает когда компьютер в сети или имеет несколько систем (например, запуск других систем через виртуальную машину) тогда возникает хаос и неясно какое время является правильным.

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

Данные собранные на нескольких машинах не будут иметь большого смысла, если они не синхронизированы.

Поскольку компьютеры регулярно запускаются и перезагружаются (для экономии электроэнергии), машины удобно синхронизировать с помощью NTP при загрузке. Для этого просто установите ntpdate пакет он позволяет быстро синхронизировать часы компьютера с серверами точного времени, подсоединёнными ко Всемирной Паутине. Установку ntpdate из репозитория произведем с помощью менеджера пакетов Synaptic или путем выполнения команд в терминале:

Для рабочих станций вы можете изменить сервер NTP, используемый при необходимости путем модификации /etc/default/ntpdate файла.

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

Установка NTP

В конфигурации по умолчанию сервер будет синхронизировать с ресурсом pool.ntp.org и обеспечит время в ответ на запросы, поступающие из локальной сети. Вы можете настроить его путем редактирования/etc/ntp.conf файла.

В целях безопасности, для доступа к Вашему серверу извне, требуется добавить в файл /etc/ntp.conf следующие строки (данные строки уже могут присутствовать):

disable monitor — отключение запросов monlist, которые возвращают список из последних 600 клиентов ntp. restrict default kod nomodify notrap nopeer noquery

restrict -6 default kod nomodify notrap nopeer noquery — отключение запросов статуса сервера.

Так же вы можете указать свои сервера для синхронизации времени, например, адреса NTP серверов Pоссии: https://www.ntp-servers.net/servers.html и отредактируйте файл /etc/ntp.conf, выполнив команду:

Разовая синхронизация времени

В качестве примера используется сервер ntp1.stratum1.ru:

Для того, чтобы организовать постоянную синхронизацию времени произведем установку демона (сервера) ntp

голоса

Рейтинг статьи

Настройки для пользователя/сессии или временные настройки

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

Чтобы заставить приложение «видеть» дату/время, отличное от системного, можно воспользоваться утилитой (из пакета ).

Если вы хотите, чтобы приложение «видело» часовой пояс, отличный от системного, установите переменную окружения , например:

$ date && export TZ=":/usr/share/zoneinfo/Pacific/Fiji" && date
Вт 01 ноя 2016 16:34:51 MSK
Ср 02 ноя 2016 01:34:51 +12

Это отличается от простой установки времени, поскольку, например, позволяет протестировать поведение программы с положительными или отрицательными значениями смещения UTC, или влияние изменений летнего/зимнего времени при разработке на системах с часовым поясом, в котором нет переходов на летнее/зимнее время.

Установка и настройка NTP-сервера на Centos

Ноябрь 6th, 2013 Evgeniy Kamenev

Установка и настройка NTP-сервера на Centos

Настройка синхронизации времени состоит из нескольких шагов

1.Корректно установить временную зону для сервера,

2.Установить ntpd

3.Выполнить первоначальную синхронизацию с сервером времени (ntpdate)

4.Запустить ntpd

5.Добавить ntpd в нужный runlevel

6.Проверить синхронизацию

7.Проверка статуса синхронизации(со временем,енмного позже)

1. Установка таймзоны

Проверить, какая таймзона установлена, можно командой date
# date

Пнд Апр 15 14:45:59 EEST 2013

Список таймзон можно найти в директории /usr/share/zoneinfo/

Для установки нужной таймзоны можно использовать следующие команды

Удаляем текущуюrm -rf /etc/localtime

Создаем симлинк на нужную (к примеру, для Киева)ln -s /usr/share/zoneinfo/Europe/Kiev /etc/localtime

date

2.Устанавливаем ntpdyum install ntp

cp /etc/ntp.conf /etc/ntp.conf~

3.После чего синхронизируем время с серверами времени в интернет

ntpdate pool.ntp.org

4./etc/init.d/ntpd start

5.chkconfig —level 2345 ntpd on

6.Проверка синхронизации

# ntpq —p

remote           refid      st t when poll reach   delay   offset  jitter

==============================================================================

*ns.campus-rv.ne 62.149.0.30      2 u   13   64  377   35.575   26.229   5.850

alpha.lvivlan.n .GPS.            1 u   11   64    7   37.583   28.939   2.061

+193.27.209.211  193.27.209.1     2 u    8   64  377   37.150   16.762   7.331

LOCAL(0)        .LOCL.          10 l   14   64  377    0.000    0.000   0.001

7.Статус синхронизации можно проверить через некоторое время с помощью утилиты ntpstat :

# ntpstat

synchronised to NTP server (193.27.209.1) at stratum 2

time correct to within 238 ms

polling server every 64 s

Описание параметров

В появившейся таблице мы видим сервера с которыми синхронизирован наш ntpd.

remote

Имя удаленного NTP-сервера.

   refid          Указывает, откуда каждый сервер получает время в данный момент.            st          Stratum  это число от 1 до 16, указывающее на точность          сервера. Единица означает максимальную точность, 16 — сервер          недоступен. Уровень вашего сервера будет равен уровню наименее точного          удаленного сервера плюс 1.

   poll          Интервал между опросами (в секундах). Значение будет изменяться          между минимальной и максимальной частотой опросов. В начале          интервал будет небольшим, чтобы синхронизация происходила          быстро. После того как часы синхронизируются, интервал начинает          увеличиваться, чтобы уменьшить трафик и нагрузку на популярные          сервера времени.

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

   delay          Количество времени (в секундах) необходимого для получения          ответа на запрос «который час? «.

   offset          Наиболее важное поле. Разница между временем локального и          удаленного серверов. В ходе синхронизации это значение должно          понижаться, указывая на то, что часы локальной машины идут все          точнее

В ходе синхронизации это значение должно          понижаться, указывая на то, что часы локальной машины идут все          точнее.

   jitter          Дисперсия (Jitter) — это мера статистических отклонений от          значения смещения (поле offset) по нескольким успешным парам          запрос-ответ. Меньшее значение дисперсии предпочтительнее,          поскольку позволяет точнее синхронизировать время.

   Значение знаков перед именами серверов

   —   Означает, что локальный сервис NTP не предпочитает этот сервер   +   Означает, что локальный сервис NTP предпочитает этот сервер   x   Отмечает плохой хост   *   Указывает на текущий наиболее предпочтительный сервер

Полезное дополнение

Чтобы просмотреть время в Linux достаточно набрать команду:

date

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

Сбт Фев 13 02:09:28 EET 2010

Установить вручную дату и время можно с помощью этой же команды —

date MMDDhhmm

Где MMмесяц, DD – день, hh – час,  mm – минуты.

Т.Е. чтобы задать к примеру 10 января 10 часов 15 минут, нужно ввести следующее:

Date 01101015

Более подробно о команде date, можно почитать в мануале

man date

1. http://www.h1host.ru/blog/index.php?pid=1&theme=2&blog_id=17

2.http://centos.moy.su/news/data_i_vremja_v_centos/2010-02-13-6

3.http://blog.ckvhost.com/nastrojka-sinxronizacii-vremeni-s-pomoshhyu-ntp-v-centos/

4. http://xaxatyxa.ru/_centos/ntp-sinhronizatsiya-vremeni-centos.html

Опубликовано в рубрике Centos, Other Метки: NTP

Установка и настройка времени в CentOS

Первым делом проверим текущую дату и время на сервере с помощью команды date:

# date Mon Oct 21 11:17:03 MSK 2019

Или более подробной команды timedatectl.

# timedatectl
Mon день недели, в данном случае понедельник
Oct 21 месяц август, 10-е число
11:17:03 текущее время часы:минуты:секунды
MSK часовой пояс
2019 текущий год

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

# date MMDDhhmm

Здесь MM — месяц, DD — число, hh — час, mm — минуты. Таким образом, чтобы изменить дату на 22 октября, 17:10, выполняем в консоли:

# date 10221710 Sun Oct 22 17:10:00 MSK 2019

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

# date --utc Mon Oct 21 08:22:19 UTC 2019

В выводе видим время относительно нулевого меридиана, без поправок на часовой пояс. После установки корректного времени переходим к настройке часового пояса.

Решение проблем

Часы показывают значение, которое не является ни UTC, ни местным временем

Это может быть вызвано рядом причин. Например, если ваши аппаратные часы используют местное время, но настроен на то, чтобы считать, что они используют UTC, в результате смещение вашего часового пояса относительно UTC будет применено дважды, что приведёт к неправильным значениям местного времени и UTC.

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

  • Настройте ntpd (включать его как службу не обязательно).
  • Установите правильный .
  • Запустите для ручной синхронизации ваших часов с сетью, игнорируя большие отклонения между локальным UTC и сетевым UTC.
  • Запустите для записи текущего системного времени в аппаратные часы.

Настройка клиентских машин

Для синхронизации времени на UNIX-машинах локальной сети целесообразно использовать утилиту ntpdate, запуская ее при помощи демона cron несколько раз в сутки, например каждый час. Для этого, в необходимо добавить следующую строку:

0 * * * * /usr/sbin/ntpdate -s <IP-адрес или FQDN-имя NTP-сервера локальной сети>

Ключ -s направляет вывод команды демону syslog. Если на клиентских машинах есть пару лишних мегабайт оперативки, то можно запустить демон ntpd, как и на сервере со следующим конфигом:

server <IP-адрес или FQDN-имя NTP-сервера локальной сети>
restrict default ignore
restrict <IP-адрес или FQDN-имя NTP-сервера локальной сети> noquery notrap
restrict 127.0.0.1 nomodify notrap

Думаю, в данном конфиге все понятно: источник времени (server) — локальный ntpd-сервер, доступ всем запретить, разрешить только локальному ntpd-серверу.

Так же, на клиентах необходимо правильно указать в каком формате хранить время и выбрать правильный часовой пояс, .

Для настройки NTP клиента Windows, необходимо выполнить в консоли следующие команды:

C:\>net time /setsntp:<IP-адрес или FQDN-имя NTP-сервера локальной сети>
The command completed successfully.
C:\>net stop w32time
The Windows Time service is stopping.
The Windows Time service was stopped successfully.
C:\>net start w32time
The Windows Time service is starting.
The Windows Time service was started successfully.
C:\>net time /querysntp
The current SNTP value is: <IP-адрес или FQDN-имя NTP-сервера локальной сети>
The command completed successfully.

Configure CentOS to Sync Time with NTP Time Servers

You can configure automatic time synchronization on your host with an external NTP (Network Time Protocol) server. To do it, you must install the ntp service. For example, you can install it using yum in CentOS 7:

After the installation, start the ntpd service and add it to startup:

Make sure that the service is running:

Redirecting to /bin/systemctl status ntpd.service
● ntpd.service - Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-10-11 15:37:33 +06; 5min ago
Main PID: 3057 (ntpd)
CGroup: /system.slice/ntpd.service
└─3057 /usr/sbin/ntpd -u ntp:ntp -g

Specify the NTP servers to synchronize time with in /etc/ntp.conf:

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org

Time is synchronized in turn. If the first NTP server is not available, the second one is used, etc.

You can synchronize time with the specified NTP server manually using this command:

By default, ntpd enables “11 minute mode”. It means that time will be synchronized every 11 minutes. If you cannot use the ntpd daemon, you can configure time synchronization using cron. Add the following command to cron:

Какие часы бывают в Linux

Немно­го тео­рии. В любом ком­пью­те­ре есть два вида часов. Одни аппа­рат­ные (ЧРВ — часы реаль­но­го вре­ме­ни или RTC — real time clock), кото­рые рабо­та­ют даже при выклю­чен­ном бло­ке пита­ния, на это у них есть бата­рей­ка на мате­рин­ской пла­те. Дру­гие про­грамм­ные, то есть часы опе­ра­ци­он­ной систе­мы. Пока­за­ния этих часов могут раз­ли­чать­ся. При этом про­грамм­ные часы опи­ра­ют­ся на пока­за­ния аппа­рат­ных при стар­те опе­ра­ци­он­ной систе­мы. А в даль­ней­шем могут син­хро­ни­зи­ро­вать­ся через интер­нет с эта­лон­ны­ми и кор­рек­ти­ро­вать ход аппаратных.
В боль­шин­стве слу­ча­ев если ком­пью­тер рабо­та­ет под управ­ле­ни­ем опе­ра­ци­он­ной систе­мой Windows пока­за­ния аппа­рат­ных и про­грамм­ных часов сов­па­да­ют. В linux же чаще все­го аппа­рат­ные часы настра­и­ва­ют по грин­ви­чу (вре­ме­ни нуле­во­го мери­ди­а­на), а про­грамм­ные по необ­хо­ди­мо­му сме­ще­нию для часо­во­го поя­са где рас­по­ло­жен сервер.
Абсо­лют­ное боль­шин­ство про­грамм (при­ло­же­ний и сер­ви­сов) в сво­ей рабо­те опи­ра­ют­ся на пока­за­ния систем­ных (про­грамм­ных) часов.

Chrony Service

Chrony — это еще одна реализация протокола сетевого времени (NTP), состоящая из двух программ, которые являются хронидом и Chronyc соответственно.

Хронид — это демон фона, который работает, который используется для регулировки системных часов и сервера часов в ядре. Он определяет соотношение увеличения или уменьшения времени компьютера и компенсирует это.

Chronyc предоставляет пользовательский интерфейс для мониторинга производительности и разнообразных конфигураций. Он работает на компьютере, который контролируется экземпляром хронида или работает на другом удаленном компьютере.

Преимущество:

  • Более быстрая синхронизация требует только минут, а не часы, тем самым минимизация погрешности времени и частоты, что очень полезно для настольных компьютеров или систем, которые не запускаются 24 часа в сутки.
  • Очень полезно лучше реагировать на быстрые изменения в тактовой частоте, которая очень полезна для энергосберегающих технологий, которые имеют нестабильные часы или энергосберегающие технологии, которые изменились на частотах такса.
  • После начальной синхронизации он не останавливает часы, чтобы предотвратить приложение, которое требует монотонного приложения, которое требует монотонного времени.
  • Лучшая стабильность предоставляется во временной асимметричной задержек (например, при насыщении ссылки вызвано крупными загрузками).
  • Нет необходимости периодически опрос сервер, поэтому системы с прерывистыми сетевыми подключением все еще могут быть быстро синхронизированы.

3.2 Профиль

Когда Chrony запускается, он читает настройки в файле конфигурации /etc/chrony.conf. То есть блокировка, если вам нужно изменить синхронный сервер времени, измените этот файл конфигурации.

/etc/chrony.keys file.

Контент отRHEL7 — Установка времени с хроническим временем с сервером часов

Программная конвертация

Приводится пример реализации на языке Си функций конвертации между Unix-временем и обычным представлением в виде даты и времени суток. Пример приведен в стандартном знаковом 32-бит формате. Однако, если закомментировать определение , пример соберется в беззнаковом варианте.

1 минута = 60 секунд

1 час = 3600 секунд

1 день = 86400 секунд

1 неделя = 604800 секунд

1 месяц (30.44 дней) = 2629743 секунд

1 год (365.24 дней) = 31556926 секунд

Конвертация времени, заголовочный файл

typedef	unsigned short			u16_t;
typedef	unsigned long			u32_t;
typedef	signed short			s16_t;
typedef	signed long			s32_t;

	// DEF: standard signed format
	// UNDEF: non-standard unsigned format
	#define	_XT_SIGNED

#ifdef	_XT_SIGNED
	typedef	s32_t                           xtime_t;
#else
	typedef	u32_t                           xtime_t;
#endif

struct tm
{       /* date and time components */
	BYTE	tm_sec;
	BYTE	tm_min;
	BYTE	tm_hour;
	BYTE	tm_mday;
	BYTE	tm_mon;
	u16_t	tm_year;
};

void xttotm(struct tm *t, xtime_t secs);
xtime_t xtmtot(struct tm *t);

Конвертация времени

#include "xtime.h"

#define _TBIAS_DAYS		((70 * (u32_t)365) + 17)
#define _TBIAS_SECS		(_TBIAS_DAYS * (xtime_t)86400)
#define	_TBIAS_YEAR		1900
#define MONTAB(year)		((((year) & 03) || ((year) == 0)) ? mos : lmos)

const s16_t	lmos[] = {, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335};
const s16_t	mos[] = {, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};

#define	Daysto32(year, mon)	(((year - 1) / 4) + MONTAB(year))

/////////////////////////////////////////////////////////////////////

xtime_t xtmtot(struct tm *t)
{	/* convert time structure to scalar time */
s32_t		days;
xtime_t		secs;
s32_t		mon, year;

	/* Calculate number of days. */
	mon = t->tm_mon - 1;
	year = t->tm_year - _TBIAS_YEAR;
	days  = Daysto32(year, mon) - 1;
	days += 365 * year;
	days += t->tm_mday;
	days -= _TBIAS_DAYS;

	/* Calculate number of seconds. */
	secs  = 3600 * t->tm_hour;
	secs += 60 * t->tm_min;
	secs += t->tm_sec;

	secs += (days * (xtime_t)86400);

	return (secs);
}

/////////////////////////////////////////////////////////////////////

void xttotm(struct tm *t, xtime_t secsarg)
{
u32_t		secs;
s32_t		days;
s32_t		mon;
s32_t		year;
s32_t		i;
const s16_t*	pm;

	#ifdef	_XT_SIGNED
		if (secsarg >= ) {
			secs = (u32_t)secsarg;
			days = _TBIAS_DAYS;
		} else {
			secs = (u32_t)secsarg + _TBIAS_SECS;
			days = ;
		}
	#else
		secs = secsarg;
		days = _TBIAS_DAYS;
	#endif

		/* days, hour, min, sec */
	days += secs  86400;		secs = secs % 86400;
	t->tm_hour = secs  3600;	secs %= 3600;
	t->tm_min = secs  60;		t->tm_sec = secs % 60;

		/* determine year */
	for (year = days  365; days < (i = Daysto32(year, ) + 365*year); ) { --year; }
	days -= i;
	t->tm_year = year + _TBIAS_YEAR;

		/* determine month */
	pm = MONTAB(year);
	for (mon = 12; days < pm--mon]; );
	t->tm_mon = mon + 1;
	t->tm_mday = days - pmmon + 1;
}

Конвертация времени из формата Excel в Unix

double et; // дата и время в формате Excel (также используется в OpenOffice, Sierra Chart)
time_t ut = round( ( et * 86400 ) - 2209161600 ); // дата и время в формате Unix

Установка ntp на CentOS/RHEL/Fedora

Network Time Protocol – NTP- является протоколом, который работает через порт UDP 123 на транспортном уровне и позволяет компьютерам синхронизировать время.

В этой статье «Установка ntp на CentOS/RHEL/Fedora» я расскажу как можно установить и настроить NTP сервер на CentOS/RHEL/Fedora на примере CentOS 7 и использую NTP Public Pool Time Servers лист.

Установка и настройка NTP демона.
1. Покет с NTP сервером предоставляется по умолчанию из официальных CentOS / RHEL 7 репозиториев и может быть установлен:

# yum install ntp

2. После установки сервера, первое что необходимо сделать, так это перейти на сайт с  официальными NTP серверами и выбрать нужный пул для вашего местоположения.

3. Затем откройте основной конфигурационный файл для редактирования списка серверов с pool.ntp.org проекта и нужно заменить его на Ваши пулы ( те которые вы выбрали на сайте).

# vim /etc/ntp.conf

Для примера, я буду использовать следующие пулы:

server 0.uk.pool.ntp.org
server 1.uk.pool.ntp.org
server 2.uk.pool.ntp.org
server 3.uk.pool.ntp.org

4. Кроме того, необходимо позволить клиентам из вашей сети синхронизировать время с сервером. Для этого добавьте следующую строку в файл конфигурации NTP, где  есть ограничения управления. Замените данный ИП и маску на Вашу, соответственно:

restrict 192.168.1.0 netmask 255.255.255.0 nomodify notrap

5. Если вам нужна дополнительная информация для устранения неполадок (в случае если у вас возникли какие-либо проблемы с вашим NTP демоном), то стоит добавить файл журнала (лог файл), в котором будет записывать все проблемы с сервером NTP, а для этого, открываем:

# vim /etc/ntp.conf

и добавляем строчку:

logfile /var/log/ntp.log

6. После того как вы отредактировали файл конфигурации со всеми настройками что выше, сохраните и закройте файл ntp.conf.

Добавление правил в Firewall и запуск NTP демона.
7. Услуги NTP используют UDP-порт 123 на транспортном уровне OSI (уровень 4).  И для корректной работы ntp сервера, нужно  открыть этот порт на RHEL / CentOS 7, а можно это сделать:

# firewall-cmd --add-service=ntp --permanent
# firewall-cmd --reload

8. После того как вы открыли в брандмауэре порт 123, то следующим шагом будет запуск сервера NTP:

# systemctl start ntpd

И добавлю его в автозагрузку ОС:

# systemctl enable ntpd

Проверяем статус:

# systemctl status ntpd

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

# ntpq -p
# date -R

10. Если вы хотите запросить и синхронизироваться NTP с pool, то используейте команду Ntpdate и затем адрес сервера (или серверов):

# ntpdate -q 0.uk.pool.ntp.org 1.uk.pool.ntp.org

Статья «Установка ntp на CentOS/RHEL/Fedora» завершена.

Синтаксис и настройка времени в CentOS 7

Первый раз попав на сервер, я вам советую выработать привычку вводить команду timedatectl

Обратите внимание, что тут есть все данные о времени, дате с учетом часового пояса и без него, сам часовой пояс, в моем примере это GMT, показан NTP сервер, статус синхронизации

Теперь у вас на выбор два метода, утилитой date или timedatectl.

Установка даты с помощью date

Посмотрим команду date.

date

  • Sat — это день недели, в моем случае суббота
  • Nov — месяц ноябрь
  • 11 — число
  • 22:06:25 — часы, минуты и секунды
  • GMT 2017 — год

Теперь предположим, что вам нужно быстро все исправить и задать правильную дату и время, формат команды date будет иметь вот такой вид:

date MMDDhhmm

  • MM — месяц
  • DD — число
  • hh — час
  • mm — минуты

Я например, хочу дату 04 июня 10:00 2017

date 06041000

Если вам необходимо получить информацию о времени, без учета часового пояса, то есть ключ UTC. В выводе видим время относительно нулевого меридиана, без поправок на часовой пояс.

date —utc

Установка даты с помощью timedatectl

Тут все так же просто, есть синтаксис timedatectl set-time ‘YYYY-MM-DD HH:MM:SS’

  • YYYY — год
  • MM — месяц
  • DD — число
  • HH:MM:SS — часы, минуты, секунды.

timedatectl set-time ‘2017-11-12 01:58:00’

Все дату и время мы настроили, давайте зададим правильный часовой пояс.

Погрешность часов

Нет ничего идеального. В том числе и часов. Время на любых часах хоть немного но отличается от реального. Одними из наиболее точных считаются атомные часы. Кварцевые часы, используемые в компьютерах, также не являются абсолютно точными, зато имеют относительно постоянную погрешность.

При установке аппаратных часов с помощью рассчитывается новое значение дрейфа в секундах в день. Значение дрейфа вычисляется с помощью разницы между новым установленным значением и значением аппаратных часов непосредственно перед установкой, с учётом значения предыдущего значения дрейфа и времени последней установки аппаратных часов. Новое значение дрейфа и время, когда часы были установлены, записываются в файл , перезаписывая предыдущие значения. Таким образом, аппаратные часы могут быть скорректированы с учётом дрейфа при выполнении команды ; это также происходит при выключении, но только если демон включен, поэтому в Arch-системах, использующих systemd, этого не происходит.

Примечание: Если время аппаратных часов устанавливается повторно менее чем через 24 часа после предыдущей установки, дрейф не пересчитывается, поскольку считает прошедший период времени слишком коротким для точного расчёта дрейфа.

Если аппаратные часы продолжают терять или набирать время с большим шагом, возможно, что был записан некорректный дрейф (но это применимо только в том случае, если запущен демон hwclock). Это может произойти, если вы неправильно установили время аппаратных часов или ваш не совпадает со стандартом времени в Windows или macOS. Значение дрейфа можно сбросить, сначала удалив файл , а затем установив правильное время аппаратных и системных часов. Затем следует проверить правильность используемого стандарта времени.

Примечание: Если вы хотите использовать значение дрейфа, хранящееся в , даже при использовании systemd (например, вы не можете или не хотите использовать NTP), вы должны регулярно вызывать , например, создав задание cron.

Программные часы очень точны, но, как и большинство часов, не идеально точны и могут дрейфовать. Хотя и редко, системные часы могут потерять точность, если ядро пропускает прерывания. Существуют некоторые инструменты для повышения точности программных часов; смотрите .

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: