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

Обновлено: 03.07.2024

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

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

Узнать текущее системное время

Узнать текущее системное время можно командой date

Узнать текущее время BIOS

Узнать текущее системное время BIOS можно командой hwclock

date и hwclock могут показывать совершенно разное время

Сначала нужно задать время командой date

date MM DD hh mm CCYY.ss

Также можно вводить «date MMDDhhmmCCYY» без секунд, тогда секунды выставляются на ноль.

После выполнения date нужно внести новое установленное время в BIOS:

Теперь осталось только проверить сохранились ли изменения

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

Проверьте установлен ли ntp командой

Если ntp не установлен выполните

sudo apt install ntp

Проверьте запускается ли ntpd автоматически командой

systemctl list-unit-files | grep ntpd.s

Если ntpd неактивен (disabled) выполните

systemctl start ntpd
systemctl enable ntpd

Проверить добавлен ли сервис ntp в зону public в firewall можно командой

sudo firewall-cmd --get-services | grep ntp

Если ещё не добавлен, то чтобы разрешить UDP траффик от ntp выполните

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

Отредактируйте файл ntp.conf с настройками сервера

Я нашёл зону Helsinki и добавляю строки

Теперь нужно перезапустить ntpd

systemctl restart ntpd

Проверить откуда берётся время можно командой

remote refid st t when poll reach delay offset jitter ============================================================================== time.cloudflare 10.79.8.177 3 u 14 64 7 3.987 -0.366 0.016 37.228.129.2 193.66.253.94 2 u 16 64 7 5.301 -1.639 1.908 ivanova.ganneff 237.17.204.95 2 u 13 64 7 5.296 3.850 0.266 ntp23.kashra-se 192.168.100.15 2 u 12 64 5 32.935 -2.213 0.192

Выставить время BIOS по только что полученному времени можно командой

Заставить систему синхронизовать время с ntp

Можно следующей командой

Timezone

Узнать текущую временную зону

Local time: Sat 2021-11-20 07:54:46. EEST Universal time: Sat 2021-11-20 05:54:46 UTC RTC time: Sat 2021-11-20 05:54:46 Time zone: Europe/Helsinki (EEST, +0300) System clock synchronized: yes NTP service: n/a RTC in local TZ: no

Важным параметром в эксплуатации любого сервера является корректно настроенное время и его своевременная синхронизация. Как выполнить смену часового пояса в ubuntu в случае его изменения или неверного указания во время установки – одна из тем этой статьи. Также я расскажу про установку и использование программ для синхронизации времени и настройку службы точного времени ntp.

Время и дата в Ubuntu Server

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

Кстати, если вам интересно узнать, почему я лично использую именно ubuntu server, а не какой-то другой linux дистрибутив, то читайте мой обзор и сравнение ubuntu с другими системами.

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

  1. При просмотре логов или разборе инцидентов придется сначала переводить время в свой часовой пояс или формат, чтобы адекватно разобраться в ситуации.
  2. Если у вас настроена какая-то интеграция с доменной структурой Windows, расхождение по времени может приводить к проблемам.
  3. При использовании cron и автоматических заданий для выполнения, неправильное время на сервере может удивить вас тем, что ваши задачи будут выполнены не тогда, когда вы этого ожидаете.
  4. Если на сервере работает web сайт или почтовый сервис, время публикации постов или отправления писем будет неправильным, что создаст неудобство пользователям.

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

Утилита date

Посмотреть время в командной строке Ubuntu можно с помощью команды date.

ubuntu date

В данном случае вы видите следующую информацию:

Для того, чтобы посмотреть время в 24-х часовом формате в консоли ubuntu, можно использовать дополнительный ключ к команде, добавив туда еще и саму дату:

Таким образом, с помощью параметров форматирования, вы можете выбирать любой формат времени для отображения. Традиционно, командная строка linux позволяет очень гибко выполнять различные действия с помощью своих утилит. Например, вы можете посмотреть не только время и дату, но и вывести в консоль номер дня недели, добавив дополнительный ключ %j:

Узнать время сервера в unix формате можно вот так:

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

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

вывод времени с помощью date

Утилита timedatectl

ubuntu timedatectl

Local time Локальное время данного сервера
Universal time Время в часовом поясе UTC
RTC time Время на аппаратных часах
Time zone Ваш часовой пояс

С просмотром в консоли текущего времени сервера разобрались, переходим к его настройке.

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

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

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

В данном случае при обновлении времени мы подразумевали:

В моих примерах время отображается в 12-ти часовом формате на английском языке. Для того, чтобы перевести его в 24-х часовой формат, нужно изменить в locale параметр LC_TIME. Именно там стоит привязка к формату. Например, в локали en_US по умолчанию используется 12-ти часовой формат, а в ru_RU или en_GB 24-х часовой.

Для того, чтобы дата в консоли отображалась на русском языке, а время в 24-х часовом формате, достаточно сформировать locale ru_RU и изменить только формат времени, оставив все остальное на английском языке.

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

формат времени 12 или 24 часа

Еще один способ установки даты и времени с помощью timedatectl:

При этом вы можете получить ошибку: Failed to set time: Automatic time synchronization is enabled. Утилита timedatectl более умная, нежели date. Она проверяет, не настроена ли у вас автоматическая синхронизация времени. И если настроена, то вручную не дает его изменить. В целом, это правильный подход, хотя и может создавать неудобства. В этом случае вам надо отключить синхронизацию и только потом установить время руками. Эту тему мы будем рассматривать ниже отдельно.

Установка и настройка часового пояса в Ubuntu

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

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

Список часовых поясов

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

или с помощью tzselect:

Настройка часового пояса в Ubuntu

Мы выполнили изменение часового пояса в ubuntu как минимум двумя разными способами. Не забудьте после этого на всякий случай проверить установленную timezone. Расскажу про еще один способ, как это можно сделать в консоли. После настройки тайм зоны, на нее создается символьная ссылка от файла /etc/localtime в директорию /usr/share/zoneinfo.

Меняя эту ссылку, можно так же изменять часовой пояс.

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

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

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

После установки системы вам стоит проверить, а не запущена ли у вас уже синхронизация времени с помощью timesyncd. Проверяем:

Статус timesynctd

Клиент ntp

Если вас по какой-то причине не устраивает служба timesyncd, можете ее отключить.

А в место нее установить, к примеру, ntp, работающую в режиме клиента.

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

Итак, установили ntp. Для того, чтобы синхронизировать время, достаточно ее просто запустить:

Проверяем статус синхронизации:

ntp client

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

Далее рассмотрим вариант, когда вам нужен свой сервер времени в локальной сети. Для этого донастроим установленную службу ntp.

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

Сервер времени в своей работе использует отдельный протокол NTP (Network Time Protocol). Ему нужен для работы UDP Port 123. Так что прежде чем дальше настраивать ntp, откройте этот порт на фаерволе или отключите его. Настройка firewall выходит за рамки данной статьи, так как в его качестве может использоваться разный софт. Если у вас управление фаерволом настроено через ufw, то достаточно такой команды:

Далее открываем конфиг /etc/ntp.conf и приводим его к примерно следующему виду:

Это минимально необходимое содержимое, чтобы запустить свой собственный сервер времени на базе ntp в локальной сети 10.20.1.0/24. Если вам не нужен протокол ipv6, то можете его отключить. Для этого в файл /etc/default/ntp добавляем параметр:

И перезапускаем службу ntp. Проверяем, как она работает.

Настройка ntp сервера в ubuntu

Служба времени слушает все сетевые интерфейсы. Теперь с любого клиента в локальной сети можно выполнить с помощью ntpdate синхронизацию времени с нашим Ubuntu Server. Проверьте это самостоятельно. Ранее я уже показывал, как это сделать.

Ошибки синхронизации времени

TIME_ERROR: 0x2041: Clock Unsynchronized

the NTP socket is in use, exiting

no server suitable for synchronization found

Еще одна популярная ошибка, которая может возникнуть при запуске ntpdate. Она означает, что не получается по какой-то причине установить соединение с сервером времени. В общем случае это означает, что есть какие-то сетевые проблемы, но не обязательно. Вы можете попробовать запустить ntpdate c ключом -u. Он означает, что будет использован локальный не 123-й порт udp, как обычно, а другой из непривилегированного диапазона. Иногда это помогает, так как многие провайдеры из-за известной уязвимости протокола ntp блокируют исходящий 123 порт.

Служба ntp не запускается после загрузки сервера

Если ntp не стартует после загрузки сервера, то связано это может быть в первую очередь с тем, что не отключена служба timesyncd. Отключите ее и проверьте еще раз:

Ubuntu меняет время и часовой пояс в bios

Убунта имеет дурную привычку при синхронизации времени устанавливать в bios часовой пояс UTC. В общем случае это не доставляет проблем, но если у вас установлена параллельно еще какая-то система на компьютере, то это может создавать проблемы. Чтобы Ubuntu не трогала часы в bios, необходимо выполнить следующую команду:

Время загрузки системы

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

Как узнать точное время включения компьютера с Ubuntu?

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

Время работы сервера

Эту же информацию можно получить с помощью утилиты who:

Время последнего выключения Ubuntu

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

Время последнего выключения Ubuntu

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

Заключение

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


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

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

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

Проверьте текущее время

Вы можете проверить текущее время и дату, используя команду date и timedatectl.

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

Использование команды date

Войдите в систему как пользователь root и используйте команду следующим образом:

Вы также можете использовать ту же команду, чтобы проверить дату 2 дня назад

Использование команды timedatectl

Для проверки состояния времени в вашей системе, а также текущих настроек времени, используйте команду timedatectl, как показано далее:

Изменение времени

Мы используем timedatectl для изменения системного времени в формате HH: ММ: ss.

Для установки времени на 09:08:07 используйте команду следующим образом (используя timedatectl)

Используя команду date

Изменение времени означает, что все системные процессы выполняются в одно и то же время, при этом рабочий стол и сервер работают одновременно.

Из командной строки используйте команду date следующим образом:

• 10: час (hh)
• 13: минута (мм)
• 13: Второй (ss)

Чтобы изменить локаль на AM или PM, используйте %p в следующем формате.

Изменение даты

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

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

Он установит текущую дату и время вашей системы на «25 января 2014 года» и «09: 17: 00 AM».

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

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

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

Создать пользовательский формат даты

Чтобы создать собственный формат даты, используйте знак плюс (+)

$ date +”Day : %d Month : %m Year : %Y”
Day: 05 Month: 12 Year: 2013

Формат %D соответствует формату год / месяц / день.

Вы также можете указать название дня, если хотите.

Вот некоторые примеры :

$ date +”%A %B %d %Y %T”
Friday December 06 2013 00:30:37

$ date +”%A %B-%d-%Y %c”
Friday December-06-2013 12:30:37 AM WIB

Отобразить список / изменить часовые пояса

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

Первое, что нужно сделать, это составить список всех часовых поясов региона, используя опцию list-часовой пояс или grep, чтобы упростить понимание команды:

Приведенная выше команда представит прокручиваемый формат.


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

Для отображения часового пояса выполните:

Установите Local-RTK

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

Используйте следующую команду:

Кроме того, следующая команда для местного времени

Проверить / изменить время CMOS

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

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

Для синхронизации даты CMOS с системной датой используйте следующий формат

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

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

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

Как работает время на компьютере?

Статья ориентирована на новичков, в первую очередь на них, потому что профессионалы уже и так знают как это сделать. Поэтому сначала рассмотрим как работает время в Linux. Когда компьютер работает часы идут, это ясно, но когда вы его отключаете, а затем включаете снова часы показывают не то время, на котором остановились, а правильное время. Это происходит потому, что часы на материнской плате идут постоянно. Таймер питается от той же батарейки, что и энергозависимая память BIOS.

Операционная система передает значение таймера в память BIOS при выключении и берет его оттуда при включении. Отсюда берутся проблемы со временем при двойной загрузке Windows и Linux, но эта тема раскрыта в другой статье - сбивается время в Ubuntu и Windows. Другая проблема почему может сбиваться время - это неверно установленный часовой пояс. Если вы установили часовой пояс linux неверно, то часы будут постоянно синхронизироваться через интернет и идти неверно.

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

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

Вы можете видеть текущее время прямо на вашем рабочем столе, в KDE часы добавлены на панель, да и в Gnome, они размещены по центру панели по умолчанию:


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


Но настроить время здесь уже не получится. Для этого нужно открывать настройки системы. Мы будем рассматривать настройки для Gnome. Откройте меню Dash и наберите в строке поиска "Параметры":

Дальше откройте "Дата и время":

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


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


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

Установка времени через терминал

Кроме графического интерфейса, у вас есть возможность делать все необходимые действия через терминал. Для этого есть утилита date. Сначала смотрим текущее время:


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


Чтобы установить время можно использовать ту же команду date. Для этого ей нужно передать строку со временем и датой, например:

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

sudo date --set "Wed Sep 6 20:43:36 EEST 2017"


Если у вас включена коррекция даты через интернет, то ее нужно отключить перед этим, потому что вы даже заметить изменений не успеете, как сервер времени linux установит правильное время. Можно сократить эту строку:

sudo date --set "Sep 6 20:43:36 2017"

Это даст тот же результат. Еще один вариант - указать формат данных, которые вы собираетесь передавать с помощью модификаторов, например, изменить время linux:

sudo date +%T -s "20:43:36"

Здесь формат очень прост - часы:минуты:секунды. Можно давать время в 12 часовом формате, для этого добавьте модификатор %p:

date +%T%p -s "8:43:36PM"

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

Еще один новый инструмент от systemd для управления временем - timedatectl. С помощью него можно выполнить те же операции, сначала смотрим доступную информацию о времени:

Текущее системное время отображается в строке Local Time. Чтобы изменить дату, используйте опцию -set-time. Синтаксис передаваемого ей параметра такой: ГГГГ-ММ-ДД ЧЧ:ММ:СС. Думаю тут понятно и без комментариев. Например:

sudo timedatectl --set-time "2017-09-06 20:43:36"


Можно задать только время, тогда нужно использовать синтаксис времени ЧЧ:ММ:СС, например:

sudo timedatectl --set-time "20:43:36"

Еще раз говорю, что если включена синхронизация по сети, то вы не сможете изменить время. Но с помощью timedatectl ее можно отключить:

sudo timedatectl set-ntp no

Или включить обратно:

sudo timedatectl set-ntp yes

C помощью этой же команды можно не только установить время linux, но и настроить часовой пояс, для этого используйте опцию set-timezone:

sudo timedatectl set-timezone 'Russia/Moscov'

Вы можете посмотреть список доступных часовых поясов командой:


Видео о настройке времени с помощью timedatectl:

Выводы

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

Читайте также: