Учимся самостоятельно исправлять ошибки с датой и временем на компьютере

Введение

Во время установки Debian, сервер автоматически настраивает системное время на основе информации из bios. Инсталлятор предлагает вам выбрать только часовой пояс. При этом, если вы не правильно указали часовой пояс (timezone), его без проблем можно изменить после установки.

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

Зачем, собственно, следить за точным временем на сервере, кроме непосредственно удобства восприятия этого времени? Причин может быть много. Перечислю основные, которые пришли в голову.

Точное время на сервере необходимо для корректного логирования всех событий и последующего расследования инцидентов. Более того, одинаковое время должно быть на всех серверах, которые участвуют в работе информационной системы. Если это не так, то расследование инцидентов становится затруднительным.
В доменной середе Windows для корректной работы протокола аутентификации Kerberos требуется примерно одинаковое время на всех участниках домена

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

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

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

17.1 Время Процессора

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

Запрос Основного Времени CPU

Чтобы получить прошедшее CPU время, используемое процессом, Вы
можете использовать функцию clock. Это средство объявлено в
заглавном файле » time.h «.

Обычно, Вы вызываете функцию clock в начале и конца интервала,
который Вы хотите измерить, вычитаете значения, и тогда делите на
CLOCKS_PER_SEC (число импульсов времени clock в секунду), примерно
так:

В системе GNU, clock _t эквивалентен long int, а CLOCKS_PER_SEC
— целочисленное значение. Но в других системах, и clock _t и тип
макрокоманды CLOCKS_PER_SEC может быть или целое число, или с
плавающей точкой. Приведением значения времени процессора к double,
см. пример выше, удостоверяется, что нужные операции работают
правильно и последовательно независимо от того, каково основное
представление.

Детализированный Запрос Времени CPU

Функция times возвращает более детализированную информацию
относительно прошедшего процессорного времени в struct tmsobject.
Вы должны включить заглавный файл » sys/times.h » чтобы
использовать это средство.

Все времена даны в импульсах сигналов времени. Они — абсолютные
значения; в новом процессе, они — все нуль. См. Раздел 23.4
.

Возвращаемое значение — также как значение clock (): прошедшее
реальное время относительно произвольной основы. Основа — константа
внутри специфического процесса, и обычно представляет время начиная
с запуска системы. Значение (clock_t) (-1) возвращается, чтобы
указать отказ.

Примечание Переносимости: функция clock, описанная в Разделе
17.1.1 , определена в соответствии c стандартом
ANSI C. Функция times — возможность POSIX.1. В системе GNU,
значение, возвращенное функцией clock эквивалентно сумме tms_utime
и tms_stime полей, возвращенных times.

Как настроить время вашего сервера

Про­ве­рим, что пока­зы­ва­ют аппа­рат­ные часы, для чего будем исполь­зо­вать три вари­ан­та коман­ды hwclock:

YAML

# hwclock
Sun 09 Mar 2014 08:01:03 PM MSK -0.926999 seconds
# hwclock —localtime
Sun 09 Mar 2014 04:01:16 PM MSK -0.130659 seconds
# hwclock —utc
Sun 09 Mar 2014 08:01:25 PM MSK -0.411394 seconds

1
2
3
4
5
6
7

# hwclock
Sun09Mar201408:01:03 PM MSK  -0.926999 seconds

# hwclock —localtime
Sun09Mar201404:01:16 PM MSK  -0.130659 seconds

# hwclock —utc
Sun09Mar201408:01:25 PM MSK  -0.411394 seconds

 

При­ве­ден­ный при­мер для слу­чая когда аппа­рат­ные часы идут по UTC, а сер­вер настро­ен на Мос­ков­ский часо­вой пояс. Осо­бых пояс­не­ний тре­бу­ет опция —utc вывод вре­ме­ни про­из­во­дит­ся (фор­ми­ру­ет­ся) с усло­ви­ем, что аппа­рат­ные часы идут по вре­ме­ни UTC. То есть пока­за­ния долж­ны сов­па­дать с жела­е­мым вре­ме­нем на сер­ве­ре. Опция же —localtime наобо­рот пока­зы­ва­ет вре­мя аппа­рат­ных часов без вся­ких поправок.

Несколько полезных команд установки времени аппаратных часов

Уста­нав­ли­ва­ем вре­мя аппа­рат­ных часов рав­ное системному:

YAML

# hwclock —systohc

1 # hwclock —systohc

Уста­нав­ли­ва­ем вре­мя систем­ных часов на осно­ва­нии ЧРВ:

YAML

# hwclock —hctosys

1 # hwclock —hctosys

Уста­нав­ли­ва­ем вре­мя рав­ное указанному:

YAML

# hwclock —set —date «09 Jan 2012 14:11»

1 # hwclock —set —date «09 Jan 2012 14:11»

Значение временной зоны

Дан­ные вре­мен­ной зоны для аппа­рат­ных часов в Centos хра­нят­ся в фай­ле /etc/sysconfig/clock.
Для мос­ков­ской вре­мен­ной зоны в слу­чае когда аппа­рат­ные часы идут по UTC он име­ет сле­ду­ю­щее содержимое:

YAML

ZONE=»Europe/Moscow»
UTC=true
ARC=false

1
2
3
4

ZONE=»Europe/Moscow»

UTC=true

ARC=false
 

Где ZONE — это наш часо­вой пояс, UTC гово­рит о том, что аппа­рат­ные часы сер­ве­ра идут по уни­вер­саль­но­му вре­ме­ни UTC, ARC в зна­че­нии false — зна­чит исполь­зу­ет­ся нор­маль­ное зна­че­ние века (эпо­хи) UNIX.
Подроб­нее по кон­фи­гу­ра­ции фай­ла /etc/sysconfig/clock в CentOS мож­но почи­тать в офи­ци­аль­ной документации.

Timedatectl для настройки времени в Debian

В большинстве современных дистрибутивов с systemd служба синхронизации времени уже присутствует в дефолтной установке и реализуется через systemd-timesyncd. Эта служба призвана заменить ntpd. Со слов разработчиков, она легче и быстрее, чем ntpd, плюс интегрирована в systemd, поэтому для автоматической синхронизации времени рекомендуется использовать именно ее.

Тут важно понимать, что systemd-timesyncd не может работать в качестве сервера времени, который мы настроим ниже. Так что, если у вас одиночный сервер, вам вполне подойдет timesyncd

Если же вы хотите использовать свой сервер времени, то надо настраивать ntp.

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

# timedatectl

Синхронизация времени уже включена и работает через timesyncd. Посмотрим ее статус.

# timedatectl timesync-status
       Server: 195.3.254.2 (2.debian.pool.ntp.org)
Poll interval: 17min 4s (min: 32s; max 34min 8s)
         Leap: normal
      Version: 4
      Stratum: 2
    Reference: C23ACA94
    Precision: 2us (-19)
Root distance: 42.113ms (max: 5s)
       Offset: -8.977ms
        Delay: 63.598ms
       Jitter: 9.582937s
 Packet count: 19
    Frequency: +7.550ppm

В принципе, больше ничего делать не нужно. Синхронизация времени через интернет уже настроена и работает. Время обновляется с сервера 2.debian.pool.ntp.org. Для надежности, можно убедиться, что служба работает, плюс, добавим ее сразу в автозагрузку, если ее там нет.

# systemctl status systemd-timesyncd
# systemctl enable systemd-timesyncd

Список серверов для синхронизации времени в timedatectl настраивается в конфигурационном файле /etc/systemd/timesyncd.conf.

Синхронизация времени с помощью ntp и ntpdate

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

# systemctl stop systemd-timesyncd
# systemctl disable systemd-timesyncd

Проверяем.

# timedatectl

Покажу теперь простую утилиту ntpdate, с помощью которой можно разово синхронизировать время, не автоматически. Для начала ее нужно установить в систему.

# apt install ntpdate

Дальше запускаем для разовой синхронизации.

# ntpdate pool.ntp.org
ntpdate: adjust time server 85.21.78.91 offset -0.020548 sec

В данном случае pool.ntp.org — адрес сервера времени. Можно использовать любой. Все, время синхронизировано и никаких автоматических служб не запущено.

Если у вас ntpdate выдает ошибку — the NTP socket is in use, exiting, значит у вас уже установлена и запущена служба ntp, которая заняла udp порт 123, необходимый для работы ntpdate. Установкой и настройкой этой службы мы и займемся далее. Также, если ntpdate не работает, посмотрите материал, может это ваш случай.

Для обновления времени сервера можно воспользоваться службой ntp. Ее так же надо установить отдельно.

# apt install ntp

Это старая проверенная служба времени, которую использовали еще задолго до появления systemd и его юнитов. Запустим ее и добавим в автозагрузку.

# systemctl start ntp
# systemctl enable ntp

После запуска она сразу же автоматически синхронизирует время. Проверим статус службы ntp в Debian.

# systemctl status ntp

Синхронизация времени через ntp заработала сразу же. Дополнительная настройка не нужна, если вас не интересует свой сервер времени, который мы настроим ниже.

При этом, для проверки статуса службы времени ntp можно использовать утилиту ntpq. Посмотрим статус синхронизации.

# ntpq -p

Поясню значения каждого столбца.

remote Адрес удаленного эталона времени, с которого была синхронизация
refid Указывает, откуда каждый эталон получает точное время. Это могут быть другие сервера времени, система GPS и другое
st Stratum (уровень) это число от 1 до 16, которое указывает на точность эталона. 1- максимальная точность, 16 — сервер недоступен. Уровень вашего сервера будет равен уровню наименее точного удаленного эталона плюс 1.
poll Интервал в секундах между опросами
reach Восьмеричное представление массива из 8 бит, отражающего результаты последних восьми попыток соединения с эталоном. Бит выставлен, если удаленный сервер ответил.
delay Время задержки ответа на запрос о точном времени
offset Разница между вашим и удаленным сервером
jitter Дисперсия (Jitter) — это мера статистических отклонений от значения смещения (поле offset) по нескольким успешным парам запрос-ответ. Чем меньше значение дисперсии, тем лучше, поскольку позволяет точнее синхронизировать время.

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

Со временем часы могут убегать или отставать, поэтому время от времени их нужно синхронизировать с эталонными. Для этого в CentOS используется демон ntpd.

Установим демон ntpd если его нет в системе:

# yum install ntp

Однократно синхронизируем время:

# ntpdate pool.ntp.org

Если получили что-то вроде the NTP socket is in use, exiting — значит ntpd демон уже запущен. В этом случае остановим его:

# service stop ntpd

Настраиваем работу ЧРВ в BIOS на время по UTC:

# hwclock --systohc --utc

Этой командой мы присвоили значение времени аппаратных часов равным системному времени. Как вы помните, системные часы мы синхронизировали командами выше.

Проверим содержимое файла /etc/sysconfig/clock чтобы система после загрузки правильно выставляла местное время. Для Москвы он должен содержать следующее:

ZONE="Europe/Moscow"
UTC=true
ARC=false
# chkconfig ntpd on

Запускаем демон синхронизации времени:

# service ntpd start

Проверяем системное время командой:

# date

Оно должно совпадать с реальным.

Проверим, синхронизируется ли системное время с серверами эталонного времени (ntp server) и все ли там в порядке командой ntpq -p:

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 test.danzuck.ch 162.23.41.56     2 u    1   64    1   12.280  -23.298   0.031
 fw.ams.nl.alexs 82.197.221.30    4 u    2   64    1    2.086  -19.002   0.000
 ntp0.mediamatic 193.0.0.229      2 u    1   64    1    0.998  -19.938   0.000
 elara.mysnip.de .INIT.          16 u    -   64    0    0.000    0.000   0.000

Демон ntpd включает в ядре Linux режим «11 minute mode». В этом режиме каждые 11 минут синхронизируются системные и аппаратные часы. По-умолчанию он (режим «11 minute mode») выключен и включается только когда какой-то сервис попросит включить этот режим. Демон ntpd как раз его и (режим «11 minute mode») включает. Так что дополнительно синхронизировать аппаратные часы по значению системных нет необходимости.

P.S. Теперь системные и аппаратные часы вашего сервера будут автоматически синхронизироваться с эталонными серверами и всегда показывать точное время.

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

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

Настройка сервера ntp в CentOS 7

Сервер времени ntp использует в своей работе одноименный протокол — Network Time Protocol, которому для работы необходим UDP порт 123. Так что перед установкой и настройкой службы времени убедитесь, что на фаерволе открыт этот порт.

Устанавливаем сервер ntp:

Теперь отредактируем файл конфигурации /etc/ntp.conf , удалив все лишнее:

Параметр Описание
server Список серверов для синхронизации времени
driftfile Задает адрес файла, в котором хранится история изменений времени во время синхронизации. Если по каким-то причинам синхронизация времени с внешними источниками станет невозможна, служба времени изменит системные часы в соответствии с записями в этом файле.
restrict 127.0.0.1

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

restrict  192.168.10.0 mask 255.255.255.0
restrict default nomodify notrap nopeer noquery Параметры указывают на то, что клиентам данного сервиса времени запрещено изменять его настройки, получать его статус. Они могут только забрать с него значения точного времени.
disable monitor Данный параметр повышает безопасность, предотвращая использования одной из уязвимостей сервиса ntpd, которую можно использовать для проведения DDoS атак.
logfile Указывает путь к файлу с логами сервиса

После завершения редактирования файла настроек запускаем службу синхронизации времени:

Проверяем запустился ли сервер:

Все в порядке, служба слушает положенный порт 123. Проверим еще на всякий случай системные логи centos:

Все в порядке, сервер запущен и полностью готов к работе.

Теперь настроим автозапуск ntp вместе с загрузкой centos:

Наблюдать за работой службы ntp можно с помощью команды ntpq -p:

Что значат все эти данные:

remote Адрес удаленного эталона времени, с которого была синхронизация
refid Указывает, откуда каждый эталон получает точное время. Это могут быть другие сервера времени, система GPS и другое
st Stratum (уровень) это число от 1 до 16, которое указывает на точность эталона. 1- максимальная точность, 16 — сервер недоступен. Уровень вашего сервера будет равен уровню наименее точного удаленного эталона плюс 1.
poll Интервал в секундах между опросами
reach Восьмеричное представление массива из 8 бит, отражающего результаты последних восьми попыток соединения с эталоном. Бит выставлен, если удаленный сервер ответил.
delay Время задержки ответа на запрос о точном времени
offset Разница между вашим и удаленным сервером
jitter Дисперсия (Jitter) — это мера статистических отклонений от значения смещения (поле offset) по нескольким успешным парам запрос-ответ. Чем меньше значение дисперсии, тем лучше, поскольку позволяет точнее синхронизировать время.

Как настроить время вашего сервера

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

# hwclock
Sun 09 Mar 2014 08:01:03 PM MSK  -0.926999 seconds
# hwclock --localtime
Sun 09 Mar 2014 04:01:16 PM MSK  -0.130659 seconds
# hwclock --utc
Sun 09 Mar 2014 08:01:25 PM MSK  -0.411394 seconds

Приведенный пример для случая когда аппаратные часы идут по UTC, а сервер настроен на Московский часовой пояс. Особых пояснений требует опция —utc вывод времени производится (формируется) с условием, что аппаратные часы идут по времени UTC. То есть показания должны совпадать с желаемым временем на сервере. Опция же —localtime наоборот показывает время аппаратных часов без всяких поправок.

Несколько полезных команд установки времени аппаратных часов

Устанавливаем время аппаратных часов равное системному:

# hwclock --systohc

Устанавливаем время системных часов на основании ЧРВ:

# hwclock --hctosys

Устанавливаем время равное указанному:

# hwclock --set --date "09 Jan 2012 14:11"

Значение временной зоны

Данные временной зоны для аппаратных часов в Centos хранятся в файле /etc/sysconfig/clock.

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

ZONE="Europe/Moscow"
UTC=true
ARC=false

Где ZONE — это наш часовой пояс, UTC говорит о том, что аппаратные часы сервера идут по универсальному времени UTC, ARC в значении false — значит используется нормальное значение века (эпохи) UNIX.

Подробнее по конфигурации файла /etc/sysconfig/clock в CentOS можно почитать в официальной документации.

System clock

The system clock (a.k.a. the software clock) keeps track of: time, time zone, and DST if applicable. It is calculated by the Linux kernel as the number of seconds since midnight January 1st 1970, UTC. The initial value of the system clock is calculated from the hardware clock, dependent on the contents of . After boot-up has completed, the system clock runs independently of the hardware clock. The Linux kernel keeps track of the system clock by counting timer interrupts.

Read clock

To check the current system clock time (presented both in local time and UTC) as well as the RTC (hardware clock):

$ timedatectl

Set system clock

To set the local time of the system clock directly:

# timedatectl set-time "yyyy-MM-dd hh:mm:ss"

For example:

# timedatectl set-time "2014-05-26 11:13:54"

sets the time to May 26th, year 2014, 11:13 and 54 seconds.

Синхронизация времени Windows 10

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

В расположении стандартной Панели управления перейдите в раздел Часы и регион > Дата и время. Теперь в закладке Время по Интернету нажмите кнопку Изменить параметры… В открывшемся окне установите отметку Синхронизировать с сервером времени в Интернете. Как можно догадаться без стабильного Интернет-соединения обновить время и дату в автоматическом режиме не получиться.

Надеюсь, тут всё предельно ясно. Если же более подробно говорить о замене батарейки на материнской плате, то стоит отметить после её извлечения будет выполнен полный сброс настроек БИОС. Дополнительно можно выполнить сброс CMOS с помощью перемычки на плате, для выполнения которого необходимо ознакомиться с инструкцией.

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

Заключение

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

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

Причины ошибки неправильное локальное время на компьютере

Причина первая — виноват сам пользователь.

Конечно, нам людям легче всегда искать причину своих проблем в технике и других людях. И мы часто говорим, что все плохие и всё плохое и лишь только один я хороший. А оказалось совсем наоборот. Ведь 90% причин всех неполадок компьютера находятся не в системном блоке или на жестком диске, а сидит на стуле перед компьютером. И я оказался не исключением.

Как в последствии выяснилось со временем всё оказалось в порядке, а вот дата на компьютере была выставлена неправильно. Как это получилось? Мне понадобилось узнать день недели, который будет на определенное число следующего месяца. Я переставил месяц и действуя скорее всего совершенно машинально нажал на Ок или Применить. И забыл! Просто забыл! А на следующий день, когда начал входить в почту, у меня начала высвечиваться ошибка неправильного локального времени.

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

Причина вторая — села батарейка.

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

Первый самый правильный это замена батарейки. Для этого вам понадобится её извлечь из системного блока или ноутбука. Лучше доверить это тому, кто дружит с техникой. Или же попытаться самому, предварительно посмотрев видеоролик как заменить батарейку в http://youtube.com именно для вашего вида техники (компьютер или ноутбук). Далее, когда извлекли батарейку, идёте с ней в магазин или на рынок и покупаете точно такую же. Затем вставляете новую назад и выставляете правильную дату и время.

Второй вариант временный. Это когда у вас пока нет времени или денег на покупку батарейки. Бывает и такое. Тогда вам каждый раз, после включения компьютера нужно будет (желательно сразу) выставлять точное время и дату.

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

Другие причины

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

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

Если ничего не помогает, обязательно проверьте свою систему на вирусы. Вполне вероятно, что компьютер подхватил «заразу», а потому система отказывается работать корректно. Просканируйте Windows с помощью антивируса и лечащей утилиты Dr. Web CureIT, чтобы найти и уничтожить все вирусы.

Почему сбивается время на компьютере

Чтобы проверить это, посмотрите в БИОС, какое время выставлено. Если неправильное – то села батарейка. Это основная причина данной проблемы, но существуют еще неявные факторы, способствующие тому, что сбивается время на компьютере.

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

Как настроить время на сервере Linux чрез hwclock?

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

Ставим время аппаратных часов равное системному:

Ставим время системных часов на основании ЧРВ:

Устанавливаем время равновеликое указанному:

Приведенный пример для варианта когда аппаратные часы идут по UTC, а сервер настроен на Московский часовой пояс. Специальных пояснений требует опция —utc вывод времени производится (формируется) с условием, что аппаратные часы идут по времени UTC. То имеется показания должны совпадать с желаемым временем на сервере. Опция же —localtime наоборот демонстрирует время (форма протекания физических и психических процессов, условие возможности изменения) аппаратных часов без всяких поправок.

Тип времени

1.1 time_t

На самом деле, длинное целое число, представляет время UTC (0: 0AM 0:05 1 января 1970 года, время эпохи системы Linux) к текущей системе вторичной разницы во времени, обычно используется для временных функций:

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

Кроме того, если вы хотите сравнить разницу времени между двумя раз, вы можете использовать функцию Difftime ():

1.2 struct tm

Структура TM называется взорванным временем в стандарте ANSI. Из определения следующего мы также можем увидеть, что время разлагается в очень подробную область.

Функции Gmtime () и LoceTime () могут преобразовать форматы данных Time_T в форматы TM. Разница состоит в том, что результатом преобразования GMTime () — это информация, соответствующая GMT (центральному часовым поясам), и результатом преобразования локального () функции — это информация о текущем часовом поясе.

Функция функции MKTime () точно противоположная, и она преобразует структуру TM в Time_T тип времени.

Функция ASCTIME () представляет собой время и дату представления структуры TM в наше привычное использование и возвращается в строку.

1.3 struct timeval

Структура Timeval может получить время точности уровня MS, которая определяется следующим образом:

Функция, используемая структурой Timeval: GetTimeOfDay () и SettimeOfDay ():

1.4 struct timespec

Структура TimeSpec может обеспечить более высокие значения времени прецизионного времени, а уровень NS определяется следующим образом:

Соответствующая функция: clock_getime ():

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

  • CLOCK_REALTIME: Система — это в режиме реального времени, начиная с UTC, если время изменяется соответственно пользовательскими изменениями;
  • CLOCK_MONOTONIC:Когда система запускает запуск, даже если пользователь меняет время;
  • CLOCK_PROCESS_CPUTIME_ID:Этот процесс начинает выполнять время в текущую программу систем процессора;
  • CLOCK_THREAD_CPUTIME_ID:Этот рычаг начинается со временем выполнения в текущей программной системе CPU.

NTP[править]

Используется по-умолчанию в большинстве дистрибутивов ALT. Отличается высокой безопасностью и как следствие — некоторыми недостатками, самый неприятный из которых — это медленный старт, доходящий в некоторых случаях до суток. Сам демон имеет название ntpd, как и аналогичный из пакета ntp, однако не является совместимым с ним ни по параметрам запуска, ни по средствам контроля, ни по конфигурационному файлу.

пакет ntpправить

Пакет является эталонной реализацией протокола ntp и имеет долгую историю. Считается не очень безопасным ввиду лидерства по количеству закрытых за историю CVE. В ALT пакет состоит из нескольких подпакетов. Непосредственно к синхронизации имеют отношение два, а третий полезен для контроля состояния ntpd.

ntpdateправить

Утилита, позволяющая однократно посмотреть время на каком-либо NTP-сервере (не обязательно ntpd) и/или синхронизировать с ним системное время. Если запущен ntpd, требуется использовать ключ -u при запуске.

ntpqправить

Утилита, позволяющая посмотреть статус работающего ntpd, как локального, так и удалённого.

пакет chronyправить

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

apt-get install chrony
systemctl start chronyd
systemctl enable chronyd

Является клиентом SNTP, не может быть сервером NTP.

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

Со временем часы могут убегать или отставать, поэтому время от времени их нужно синхронизировать с эталонными. Для этого в CentOS используется демон ntpd.
Установим демон ntpd если его нет в системе:

# yum install ntp

Однократно синхронизируем время:

# ntpdate pool.ntp.org

Если получили что-то вроде the NTP socket is in use, exiting — значит ntpd демон уже запущен. В этом случае остановим его:

# service stop ntpd

Настраиваем работу ЧРВ в BIOS на время по UTC:

# hwclock --systohc --utc

Этой командой мы присвоили значение времени аппаратных часов равным системному времени. Как вы помните, системные часы мы синхронизировали командами выше.
Проверим содержимое файла /etc/sysconfig/clock чтобы система после загрузки правильно выставляла местное время. Для Москвы он должен содержать следующее:

ZONE="Europe/Moscow"
UTC=true
ARC=false
# chkconfig ntpd on

Запускаем демон синхронизации времени:

# service ntpd start

Проверяем системное время командой:

# date

Оно должно совпадать с реальным.
Проверим, синхронизируется ли системное время с серверами эталонного времени (ntp server) и все ли там в порядке командой ntpq -p:

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 test.danzuck.ch 162.23.41.56     2 u    1   64    1   12.280  -23.298   0.031
 fw.ams.nl.alexs 82.197.221.30    4 u    2   64    1    2.086  -19.002   0.000
 ntp0.mediamatic 193.0.0.229      2 u    1   64    1    0.998  -19.938   0.000
 elara.mysnip.de .INIT.          16 u    -   64    0    0.000    0.000   0.000

Демон ntpd включает в ядре Linux режим «11 minute mode». В этом режиме каждые 11 минут синхронизируются системные и аппаратные часы. По-умолчанию он (режим «11 minute mode») выключен и включается только когда какой-то сервис попросит включить этот режим. Демон ntpd как раз его и (режим «11 minute mode») включает. Так что дополнительно синхронизировать аппаратные часы по значению системных нет необходимости.
P.S. Теперь системные и аппаратные часы вашего сервера будут автоматически синхронизироваться с эталонными серверами и всегда показывать точное время.

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

  1. Change Timezone in CentOS
  2. Автозапуск сервисов в CentOS/RHEL
  3. Время в linux. UTC или localtime?
  4. Настройка времени в Bitrix VM (CentOS)

Управление сервисом timesyncd

До недавнего времени за синхронизацию времени отвечал демон ntpd (Network Time Protocol daemon). Он подключал сервер к пулу серверов NTP, что обеспечивало точное хронометрирование.

Теперь Ubuntu вместо ntpd по умолчанию использует timesyncd. Сервис timesyncd подключается к тем же серверам времени и работает примерно таким же образом, но он легче ntpd и интегрирован с systemd.

Узнать состояние timesyncd позволяет команда timedatectl.

Команда выведет местное время, универсальное время (если вы используете часовой пояс UTC, оно будет совпадать с местным временем) и дополнительную информацию о состоянии сетевого времени. Строка «System clock synchronized: yes» означает, что время было успешно синхронизировано, а «systemd-timesyncd.service active: yes» — что timesyncd включен и работает.

Если сервис timesyncd отключен, введите:

После этого снова запросите состояние timesyncd. В строках System clock synchronized и systemd-timesyncd.service active должно быть значение yes.

Как узнать время через консоль Linux?

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

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

где, MM — представляется месяцем, DD — днем, hh — часом, mm — минутой, CCYY — годом (вводим так – хххх), ss — секундами. То имеется в виде МесяцДеньЧасМинута, остальное YY]] по вкусу. Об это хорошо (и главное в самом верху) составлено в мануале man date, однако остальное писалось, по всей видимости, роботами для роботов. Воздействие нужно выполнять из под рута. Для того, чтобы посмотреть полный список команд, какие помогут вам изменить/настроить время через консоль Linux достаточно ввести

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

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