Посмотреть время на сервере linux
Обновлено: 07.07.2024
Немного теории. В любом компьютере есть два вида часов. Одни аппаратные (ЧРВ — часы реального времени или RTC — real time clock), которые работают даже при выключенном блоке питания, на это у них есть батарейка на материнской плате. Другие программные, то есть часы операционной системы. Показания этих часов могут различаться. При этом программные часы опираются на показания аппаратных при старте операционной системы. А в дальнейшем могут синхронизироваться через интернет с эталонными и корректировать ход аппаратных.
В большинстве случаев если компьютер работает под управлением операционной системой Windows показания аппаратных и программных часов совпадают. В linux же чаще всего аппаратные часы настраивают по гринвичу (времени нулевого меридиана), а программные по необходимому смещению для часового пояса где расположен сервер.
Абсолютное большинство программ (приложений и сервисов) в своей работе опираются на показания системных (программных) часов.
Для чего нужно корректировать часы
- Чтобы избежать вчерашних новостей и публикаций завтрашнего дня. К примеру часы вашего сервера идут по времени Хабаровска, а основные посетители из Европы (разница UTC +11). В такой ситуации вечерний посетитель увидит «завтрашние» даты на сайте. Так как когда в Европе вечер, то в Хабаровске утро следующего дня.
- Чтобы было удобно настраивать задания Cron.
- Чтобы время создания файлов совпадало с фактическим и не вводило Вас в заблуждение.
Как настроить время вашего сервера
Проверим, что показывают аппаратные часы, для чего будем использовать три варианта команды hwclock:
Приведенный пример для случая когда аппаратные часы идут по UTC , а сервер настроен на Московский часовой пояс. Особых пояснений требует опция —utc вывод времени производится (формируется) с условием, что аппаратные часы идут по времени UTC . То есть показания должны совпадать с желаемым временем на сервере. Опция же —localtime наоборот показывает время аппаратных часов без всяких поправок.
Несколько полезных команд установки времени аппаратных часов
Устанавливаем время аппаратных часов равное системному:
Устанавливаем время системных часов на основании ЧРВ:
Устанавливаем время равное указанному:
Значение временной зоны
Данные временной зоны для аппаратных часов в Centos хранятся в файле /etc/sysconfig/clock.
Для московской временной зоны в случае когда аппаратные часы идут по UTC он имеет следующее содержимое:
Где ZONE — это наш часовой пояс, UTC говорит о том, что аппаратные часы сервера идут по универсальному времени UTC , ARC в значении false — значит используется нормальное значение века (эпохи) UNIX .
Подробнее по конфигурации файла /etc/sysconfig/clock в CentOS можно почитать в официальной документации.
Системные часы операционной системы CentOS
Для системных (программных) часов CentOS используется команда date.
Приведенный пример для случая когда операционная система использует Московский часовой пояс. Здесь опция —utc говорит, что необходимо показать время нулевого меридиана, то есть без поправок на часовой пояс.
Изменение временной зоны (часового пояса) в CentOS
Для изменения времени системных часов, если их показания не соответствуют необходимому региону, необходимо проделать следующие нехитрые операции.
В начале, сделаем резервную копию существующего файла временной зоны (часового пояса).
Это хорошая практика, когда вы делаете резервные копии оригинальных файлов конфигурации ?
Затем, создаем ссылку на необходимую временную зону.
(в нашем случае /usr/share/zoneinfo/Asia/Bishkek)
где Europe/Moscow необходимая временная зона. Полный список доступных часовых поясов смотрим в каталоге /usr/share/zoneinfo/.
При необходимости можно установить значение времени вручную:
где MM – месяц, DD – день, hh – час, mm – минуты.
То есть чтобы задать, к примеру, 18 марта 20 часов 15 минут, нужно ввести следующее:
Более подробно о команде date, можно почитать в мануале, выполнив команду:
Настройка сервера времени ntp
Со временем часы могут убегать или отставать, поэтому время от времени их нужно синхронизировать с эталонными. Для этого в CentOS используется демон ntpd.
Установим демон ntpd если его нет в системе:
Однократно синхронизируем время:
Если получили что-то вроде the NTP socket is in use, exiting — значит ntpd демон уже запущен. В этом случае остановим его:
Настраиваем работу ЧРВ в BIOS на время по UTC :
Этой командой мы присвоили значение времени аппаратных часов равным системному времени. Как вы помните, системные часы мы синхронизировали командами выше.
Проверим содержимое файла /etc/sysconfig/clock чтобы система после загрузки правильно выставляла местное время. Для Москвы он должен содержать следующее:
Настраиваем демон ntpd на автозагрузку при старте операционной системы:
Запускаем демон синхронизации времени:
Проверяем системное время командой:
Оно должно совпадать с реальным.
Проверим, синхронизируется ли системное время с серверами эталонного времени (ntp server) и все ли там в порядке командой ntpq -p:
Демон ntpd включает в ядре Linux режим «11 minute mode». В этом режиме каждые 11 минут синхронизируются системные и аппаратные часы. По-умолчанию он (режим «11 minute mode») выключен и включается только когда какой-то сервис попросит включить этот режим. Демон ntpd как раз его и (режим «11 minute mode») включает. Так что дополнительно синхронизировать аппаратные часы по значению системных нет необходимости.
P.S. Теперь системные и аппаратные часы вашего сервера будут автоматически синхронизироваться с эталонными серверами и всегда показывать точное время.
В появившейся таблице мы видим сервера с которыми синхронизирован наш ntpd .
remote
Имя удаленного NTP-сервера.
refid
Указывает, откуда каждый сервер получает время в данный момент.
st
Stratum это число от 1 до 16, указывающее на точность
сервера. Единица означает максимальную точность, 16 -- сервер
недоступен. Уровень вашего сервера будет равен уровню наименее точного
удаленного сервера плюс 1.
poll
Интервал между опросами (в секундах). Значение будет изменяться
между минимальной и максимальной частотой опросов. В начале
интервал будет небольшим, чтобы синхронизация происходила
быстро. После того как часы синхронизируются, интервал начинает
увеличиваться, чтобы уменьшить трафик и нагрузку на популярные
сервера времени.
reach
Восьмеричное представление массива из 8 бит, отражающего
результаты последних восьми попыток соединения с сервером. Бит
выставлен, если удаленный сервер ответил.
delay
Количество времени (в секундах) необходимого для получения
ответа на запрос "который час? ".
offset
Наиболее важное поле. Разница между временем локального и
удаленного серверов. В ходе синхронизации это значение должно
понижаться, указывая на то, что часы локальной машины идут все
точнее.
jitter
Дисперсия (Jitter) -- это мера статистических отклонений от
значения смещения (поле offset) по нескольким успешным парам
запрос-ответ. Меньшее значение дисперсии предпочтительнее,
поскольку позволяет точнее синхронизировать время.
Значение знаков перед именами серверов
- Означает, что локальный сервис NTP не предпочитает этот сервер
+ Означает, что локальный сервис NTP предпочитает этот сервер
x Отмечает плохой хост
* Указывает на текущий наиболее предпочтительный сервер
Что такое NTP-сервер?
NTP означает сетевой протокол времени.
Это сетевой протокол, который синхронизирует часы между компьютерными системами по сети.
Он будет сохранять одинаковое время (точное время) для всех систем, которые подключены к NTP-серверу через NTP или клиент Chrony.
NTP обычно может поддерживать время с точностью до десятков миллисекунд по общедоступному Интернету и может достигать точности, превышающей одну миллисекунду, в локальных сетях при идеальных условиях.
Он использует протокол пользовательских дейтаграмм ( UDP ) на порту номер 123 для отметок времени отправки и получения.
Это клиент / серверное приложение.
Он отправляет и получает временные метки с использованием протокола пользовательских дейтаграмм ( UDP ) на порту 123.
Что такое NTP-клиент?
NTP-клиент синхронизирует свои часы с сетевым сервером времени.
Что такое Chrony ?
Chrony — это замена NTP-клиента.
Он может синхронизировать системные часы с большей точностью и может быть особенно полезен для систем, которые не подключены к сети все время.
Зачем нам нужен NTP сервер?
Чтобы все серверы в вашей организации были синхронизированы с точным временем выполнения заданий, основанных на времени.
Чтобы прояснить это, я расскажу вам сценарий.
Скажем, например, у нас есть два сервера (Server1 и Server2).
Server1 обычно выполняет пакетные задания в 10:55, а затем Server2 необходимо выполнить другое задание в 11:00 на основании отчета о завершении задания Server1.
Если обе системы используют в разное время (если одна система опережает другие, другие отстают от этой конкретной), мы не сможем это сделать.
Для этого нам нужно настроить NTP .
Надеюсь, это убрало ваши сомнения по поводу необходимости NTP .
В этой статье мы будем использовать следующую настройку, чтобы проверить работу NTP
СТОРОНА NTP-СЕРВЕРА: Как установить NTP-сервер на Linux?
Не существует разных пакетов для NTP-сервера и NTP-клиента, так как это модель клиент / сервер.
Пакет NTP доступен в официальном репозитории дистрибутива, поэтому используйте его для установки.
Впрочем в системе по умолчанию настроена синхронизация времени с интернетом и я уже давно забыл что значит всегда перенастраивать часы, если они отстают, такая необходимость может появиться. В этой посте мы рассмотрим как выполняется установка времени Linux различными способами, через терминал, графичный интерфейс и так далее. Но сначала нам нужно понять как работает время.
Какое время бывает в Linux?
Для поддержания времени имеется в Linux есть команда date, и у неё есть множество других замечательных возможностей, о каких владельцы UNIX-систем могут и не догадываться. Серверные и системные часы должны указывать верное время. Время от времени часы на компьютере могут сбиваться по различным причинам, время сможет быть установлено изначально неправильно или неправильно выбран часовой пояс.
Немного теории. В любом компьютере есть два вида часов. Одни аппаратные (ЧРВ — часы настоящего времени или RTC — real time clock), которые работают даже при выключенном блоке кормления, на это у них есть батарейка на материнской плате. Другие программные, то есть часы (прибор для определения текущего времени суток и измерения продолжительности временных интервалов в единицах, меньших, чем одни сутки) операционной системы. Сведения этих часов могут различаться. При этом программные часы опираются на показания аппаратных при старте операторной системы. А в дальнейшем могут синхронизироваться через интернет с эталонными и корректировать ход аппаратных.
Внимание: дату и время может изменять только root-пользователь.
В большинстве ситуации если компьютер работает под управлением операционной системой Windows показания аппаратных и программных часов сходят. В linux же чаще всего аппаратные часы настраивают по гринвичу (времени нулевого экватора), а программные по необходимому смещению для часового пояса где расположен сервер. Абсолютное большинство прог (приложений и сервисов) в своей работе опираются на показания системных (программных) часов.
Узнать время на сервере в Linux Ubuntu
Знаете ли вы, что по умолчанию в Linux каждые день примерно в четыре часа ночи запускаются различные служебные задачи?! Например чистка временных каталогов, сжатие лог-файлов и т.п. А теперь представьте, что время на сервере настроено ошибочно и все эти задачи запускаются в час пик посещаемости вашего сайта. Правильно установленные дата и время нужны для корректной работы планировщика задач.
Кроме того, они пишутся во все основные целые лог-файлы и лог-файлы посещений веб-сервера. Никогда не возникало желания узнать время или дату, когда под рукой только Ubuntu, а телефон с часами где-то запропастились? Запустите команду date без характеристик для проверки времени. Как всегда в Ubuntu все элементарно, нужно только набрать команду:
Команда date — как раз для этих целей. Можно почитать ее справку — там много чего интересного.
Как узнать время через консоль Linux?
Наверное у многих были ситуации, когда под руками лишь консоль, а время узнать нужно. Для того, чтобы посмотреть текущее время чрез консоль Linux достаточно ввести следующую команду
Для этого, чтобы поменять время консоль Linux нужно ввести следующую команду:
где, MM — представляется месяцем, DD — днем, hh — часом, mm — минутой, CCYY — годом (вводим так – хххх), ss — секундами. То имеется в виде МесяцДеньЧасМинута, остальное [MMDDhhmm[[CC]YY][.ss]] по вкусу. Об это хорошо (и главное в самом верху) составлено в мануале man date, однако остальное писалось, по всей видимости, роботами для роботов. Воздействие нужно выполнять из под рута. Для того, чтобы посмотреть полный список команд, какие помогут вам изменить/настроить время через консоль Linux достаточно ввести
Как настроить время на сервере Linux чрез hwclock?
Проверим, что показывают аппаратные часы, для чего будем использовать три вида команды hwclock:
Ставим время аппаратных часов равное системному:
Ставим время системных часов на основании ЧРВ:
Устанавливаем время равновеликое указанному:
hwclock --set --date "09 Jan 2012 14:11"
Приведенный пример для варианта когда аппаратные часы идут по UTC, а сервер настроен на Московский часовой пояс. Специальных пояснений требует опция —utc вывод времени производится (формируется) с условием, что аппаратные часы идут по времени UTC. То имеется показания должны совпадать с желаемым временем на сервере. Опция же —localtime наоборот демонстрирует время (форма протекания физических и психических процессов, условие возможности изменения) аппаратных часов без всяких поправок.
Настройка сервера времени ntp в Linux
Для этого, чтобы ваша система могла автоматический регулировать время, вам нужно установить програмку ntp. Получите ее из репозитария. После того, как она будет установлена, вы можете настроить ее следующим образом. Однократно хронируем время:
Если получили что-то вроде the NTP socket is in use, exiting — значивает ntpd демон уже запущен. В этом случае остановим его:
service stop ntpd
Налаживаем работу ЧРВ в BIOS на время по UTC:
hwclock --systohc --utc
Этой бригадой мы присвоили значение времени аппаратных часов равным системному времени. Как вы помните, целые часы мы синхронизировали командами выше. Проверим содержимое файла /etc/sysconfig/clock дабы система после загрузки правильно выставляла местное время.
Теперь целые и аппаратные часы вашего сервера будут автоматически синхронизироваться с эталонными серверами и постоянно показывать точное время. Теперь вы знаете как выполняется установка времени linux. Как видите, это очень просто, вы можете использовать различные способы, в зависимости от того, что вам будет спокойнее.
Чтобы отобразить время в формате UTC (всемирное координированное время), ранее называвшееся GMT (среднее время по Гринвичу), добавьте параметр -u.
3) Отображение определенной даты в строковом формате
Вы можете отобразить конкретную дату в строковом формате, используя параметр –date, как показано ниже. Обратите внимание, что это не влияет на дату и время вашей системы, а просто преобразует формат даты в строку.4) Использование команды date, чтобы проверить прошлые даты
Команда date также может выводить дату и время в прошлом относительно вашей текущей даты.
Например, чтобы проверить дату 9 дней назад, выполните команду.
Чтобы просмотреть дату двумя неделями ранее, выполните команду:5) Использование команды date, чтобы проверить будущие даты
Так же, как вы можете проверять прошлые даты, команда date также позволяет отображать будущие даты.
Например, чтобы узнать дату завтрашнего дня:
Чтобы проверить, какая дата будет ровно через неделю, запустите: Чтобы отобразить дату через 4 месяца после запуска:6) Параметры форматирования даты
Команда date имеет множество опций, позволяющих настроить вывод даты. Ниже перечислены некоторые из доступных вариантов форматирования.- %D – Отображение даты в формате мм / дд / гг
- %Y – Год (например, 2021 г.)
- %m – Месяц (01-12)
- %B – Название месяца в формате полной строки (например, February)
- %b –Название месяца в сокращенном строковом формате (например, Feb).
- %d – День месяца (например, 01)
- %j – День года (001-366)
- %u – День недели (1-7)
- %A –День недели в формате полной строки (например, Friday)
- %a – День недели в сокращенном формате (например, Fri)
- %H – Час (00-23)
- %I – Час (01-12)
- %M – Mинута (00-59)
- %S – Секунда (00-60)
Синтаксис использования опции date довольно прост:
Например, чтобы вывести в формате гг / мм / дд, запуститеЧтобы вывести день недели, месяц, год и текущее время:
7) Как установить дату и время
Команда date также позволяет вам установить дату и время.
Например, чтобы установить дату и время на 25 июня 2021 года в 11:15, выполните команду:
Такой способ установки даты и времени в системе не рекомендуется, поскольку время, скорее всего, будет неточным.
Фактически, современные системы, такие как CentOS 8/RHEL 8, не поддерживают NTP.
У нас есть подробное руководство о том, как синхронизировать время и дату с помощью chrony.
Если вы хотите изменить часовой пояс, используйте команду timedatectl, пример показан ниже.
8) Использование команды Date в переменной
Иногда при создании скриптов мы сохраняем команду date в переменной, а затем позже создаем файл лога используя эту переменную, примеры показаны ниже.Заключение
Мы надеемся, что пролили свет на использование команды date на Linux, и надеемся, что вы сможете использовать ее для отображения даты в системе и настройки вывода по своему усмотрению.
Команда date отображает или устанавливает системную дату. Чаще всего он используется для печати даты и времени в разных форматах и для расчета будущих и прошлых дат.
Использование Date
Синтаксис date команды следующий:
Чтобы отобразить текущее системное время и дату, используя форматирование по умолчанию, вызовите команду без каких-либо параметров и аргументов:Выходные данные включают день недели, месяц, день месяца, время, часовой пояс и год:
Параметры форматирования даты
Вывод date команды может быть отформатирован с помощью последовательности символов управления форматом, перед которой стоит + знак. Элементы управления форматом начинаются с % символа и заменяются их значениями.
Символ %Y будет заменен на год, %m месяц и %d день месяца:
Вот еще один пример:
Ниже приведен небольшой список некоторых наиболее распространенных символов форматирования:
- %a - Сокращенное название дня недели (например, понедельник)
- %A - Сокращенное полное название дня недели (например, понедельник)
- %b - Сокращенное название месяца (например, январь).
- %B - сокращенное длинное название месяца (например, январь)
- %d - день месяца (например, 01)
- %H - час (00..23)
- %I - час (01.12.12)
- %j - День года (001..366)
- %m - Месяц (01.12.12)
- %M - Минута (00..59)
- %S - Второй (00 .. 60)
- %u - день недели (1..7)
- %Y - Полный год (например, 2019)
Чтобы получить полный список всех параметров форматирования, запустите date --help или man date в своем терминале.
Пользовательское форматирование даты
-d Опция позволяет работать на дату конкретного. Вы можете указать дату в виде удобочитаемой строки даты, как показано ниже:
Использование пользовательского форматирования:
Строка даты принимает значения, такие как «завтра», «пятница», «последняя пятница», «следующая пятница», «следующий месяц», «следующая неделя» .. и т. Д.
Вы также можете использовать параметр строки даты, чтобы показать местное время для разных часовых поясов. Например, чтобы показать местное время 6:30 утра следующего понедельника на восточном побережье Австралии, введите:
Переопределить часовой пояс
Команда date возвращает дату в системном часовом поясе по умолчанию . Чтобы использовать другой часовой пояс, установите переменную среды TZ в желаемый часовой пояс.
Например, чтобы показать время в Мельбурне, введите:
Чтобы получить список всех доступных часовых поясов , вы можете либо перечислить файлы в /usr/share/zoneinfo каталоге, либо использовать timedatectl list-timezones команду.
Конвертер эпох
date Команда может быть использована в качестве преобразователя Epoch. Время, или метки времени Unix, - это количество секунд, прошедших с 1 января 1970 года в 00:00:00 UTC.
Чтобы напечатать количество секунд от эпохи до текущего дня, вызовите date с %s контролем формата:
Чтобы преобразовать секунды с начала эпохи в дату, установите секунды в виде строки даты с префиксом @ :
Использование date с другими командами
Команда date чаще всего используется для создания имен файлов, которые содержат текущее время и дату.
Команда ниже создаст файл резервной копии Mysql в следующем формате database_name-20190601.sql
Вы также можете использовать date команду в своих сценариях оболочки. В приведенном ниже примере мы присваиваем выход date к date_now переменной:
Показать время последнего изменения файла
Команда date с -r параметром показывает время последнего изменения файла. Например:
Если вы хотите изменить временную метку файла, используйте touch команду .
Установите системное время и дату
Установка системного времени и даты вручную с помощью этой date команды не рекомендуется, поскольку в большинстве дистрибутивов Linux системные часы синхронизируются с ntp помощью systemd-timesyncd служб или .
Однако, если вы хотите установить системные часы вручную, вы можете использовать эту --set= опцию. Например, если вы хотите установить дату и время 17:30, 01 июня 2019 г., введите:
Читайте также: