Команда hwclock: обслуживание времени в Linux

В этом уроке мы собираемся обсудить обслуживание времени в Linux.

Вступление

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

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

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

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

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

В таких ситуациях абсолютно необходимо поддерживать правильное системное время.

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

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

Целостность ваших данных была бы на высоте.

Итак, в этом уроке мы рассмотрим настройку аппаратных часов с помощью hwclock команда, а затем мы поговорим о синхронизации времени с netdate команда.

Как установить аппаратные часы в Linux

Начнем с обсуждения того, как управлять временем с помощью hwclock.

Типы часов в Linux

Теперь помните, что в системе Linux используются двукратные источники.

Первый – это Аппаратные часы который интегрирован в материнскую плату вашей системы, также известный как часы RTC, CMOS или BIOS, и работает все время, даже когда система выключена или даже когда она отключена от сети.

У нас также есть Системное время, теперь системное время запускается через программное обеспечение внутри самого ядра Linux.

Следовательно, он работает только во время работы системы.

Также помните, что системное время измеряется не как текущая дата и время, а как количество секунд, в течение которых нужно установить время в полночь 1 января 1970 года по всемирному координированному времени.

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

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

Роль аппаратных часов

На самом деле роль аппаратных часов проста, их задача – следить за временем, когда система выключена.

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

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

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

Итак, чтобы управлять аппаратными часами в вашей системе, вы используете hwclock команда.

Особенности команды hwclock

Как указано здесь, он может делать много разных вещей:

  • Отображение текущего времени.
  • Установите время аппаратных часов.
  • Синхронизируйте аппаратные часы с системным временем.
  • Синхронизируйте системное время с аппаратными часами.

Небольшое примечание. Помимо использования hwclock вы также можете просматривать текущее время аппаратных часов, а не системное время, а время аппаратных часов, просто отображая /proc/driver/rtc.

RTC расшифровывается как часы реального времени.

# cat /proc/driver/rtc
rtc_time	: 10:51:46
rtc_date	: 2021-05-25
alrm_time	: 18:20:07
alrm_date	: 2021-05-21
alarm_IRQ	: no
alrm_pending	: no
update IRQ enabled	: no
periodic IRQ enabled	: no
periodic IRQ frequency	: 1024
max user IRQ frequency	: 64
24hr		: yes
periodic_IRQ	: no
update_IRQ	: no
HPET_emulated	: yes
BCD		: yes
DST_enable	: no
periodic_freq	: 1024
batt_status	: okay

Теперь есть несколько разных опций, которые вы можете использовать с hwclock , они доступны в большинстве дистрибутивов Linux.

Синхронизация времени между системами Linux в сети

Теперь имейте в виду, что объем hwclock Функциональность команд ограничена только вашей локальной компьютерной системой.

Это нормально, но если ваша компьютерная система работает в сети, очень вероятно, что вам понадобится синхронизация системного времени на всех ваших Linux-системах.

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

Теперь один из инструментов, который вы можете использовать для синхронизации времени между системами Linux, – это netdate команда.

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

Здесь показан синтаксис. Где мы входим netdate за которым следует IP-адрес сервера времени, и вы также можете использовать имя DNS.

Синтаксис: netdate [options] [protocol] hostname...

Процесс синхронизации времени в Linux.

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

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

Итак, в этом примере у меня есть Провайдер времени сюда.

Это серверная система, демон времени был включен на этом сервере, и он работает, и его время синхронизации через порт UDP 37.

Это порт по умолчанию, вы, конечно, можете его изменить.

Что будет делать сервер времени, так это прослушивать порт 37 на предмет запросов синхронизации времени.

Итак, предположим, мы запускаем netdate команда на Потребитель времени (Рабочая станция), он отправит запрос времени от netdate передать команду Провайдеру времени.

Служба времени на этом сервере (поставщик времени), работающая на порте 37, получает запрос и затем отправляет соответствующее время обратно Потребителю времени.

В этот момент время на Потребитель времени устанавливается в любое время, полученное от серверной системы (Провайдер времени).

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

Теперь важно помнить, что когда вы синхронизируете время с netdate Вы синхронизируете системное время, а не время аппаратных часов.

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

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

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

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

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

Поэтому неплохо запустить netdate команда на регулярной основе с помощью cronjob.

Таким образом, мы постоянно синхронизируем время между этими двумя системами.

Заключение

Я надеюсь, что теперь вы хорошо понимаете, как поддерживать и синхронизировать время в Linux с помощью команд hwclock и netdate.

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

Вот еще несколько подобранных вами руководств, которые вы можете прочитать дальше:

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *