Ubuntu не показывает время

Обновлено: 07.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: Sun 2021-11-21 04:40:07. EEST Universal time: Sun 2021-11-21 02:40:07 UTC RTC time: Sun 2021-11-21 02:40:07 Time zone: Europe/Helsinki (EEST, +0300) System clock synchronized: yes NTP service: n/a RTC in local TZ: no

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

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

Почему так происходит?

Как я уже сказал, проблема в разных форматах хранения и восстановления времени. В компьютере есть два вида часов. Аппаратные - идут всегда, даже когда компьютер выключен и программные часы, встроенные в ядро. Когда компьютер включается значение аппаратных часов записывается в программные, и в дальнейшем операционная система берет время оттуда. Но Windows и Linux работают по-разному с этими двумя часами. Есть два способа работы:

  • UTC - и аппаратные, и программные часы идут по Гринвичу. То есть часы дают универсальное время на нулевом часовом поясе. Например, если у вас часовой пояс GMT+3, Киев, то часы будут отставать на три часа. А уже пользователи локально прибавляют к этому времени поправку на часовой пояс, например, плюс +3. Каждый пользователь добавляет нужную ему поправку. Так делается на серверах, чтобы каждый пользователь мог получить правильное для своего часового пояса время.
  • localtime - в этом варианте программные часы тоже идут по Гринвичу, но аппаратные часы идут по времени локального часового пояса. Для пользователя разницы никакой нет, все равно нужно добавлять поправку на свой часовой пояс. Но при загрузке и синхронизации времени Windows вычитает из аппаратного времени 3 часа (или другую поправку на часовой пояс), чтобы программное время было верным.

Так почему же сбивается время Ubuntu и Windows? Вот, допустим, работает Windows, и со временем там все нормально, оно сохранено в формате localtime. Но при перезагрузке в Linux, операционная система берет время Localtime, и думает что это UTC. Таким образом, пользователь будет брать уже правильное время, и прибавлять к нему поправку на часовой пояс. Поэтому время уже будет неверным.

Дальше вы исправили время, и теперь аппаратные часы работают в UTC. Но затем грузите WIndows. Система думает, что это localtime и для установки правильного программного времени добавляет к аппаратному поправку на часовой пояс, например, в нашем случае +3. Дальше каждый пользователь еще раз применяет эту поправку и время уже сбито, опять.

Единственно верный способ решить эту проблему - заставить обе системы работать по одному формату и сделать это совсем не сложно. Причем можно пойти двумя путями: либо заставить Windows работать по UTC, либо Linux по формату localtime, что является не совсем правильным, но вполне возможно. Итак перейдем к решению проблемы сбивается время в Ubuntu.

Настройка Windows для работы по UTC

Итак, если у вас сбивается время Windows и Linux при переключении между операционными системами, лучшим способом будет заставить Windows работать по более правильному и логичному формату. Для этого достаточно добавить один ключ реестра. Вы можете сделать это с помощью одной команды в консоли. Чтобы открыть консоль в Windows 10 проведите мышь в левый нижний угол, затем нажмите правую кнопку. В контекстном меню выберите Командная строка (администратор):

Дальше наберите команду для 32 битных систем:

> Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

А для 64-битных, нужно использовать тип значения REG_QWORD:

> Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_QWORD /d 1


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

> sc config w32time start= disabled


Как вернуть обратно?

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

> Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0

И запускаем обратно службу синхронизации:

> sc config w32time start= demand

Готово, а дальше рассмотрим, как заставить Linux использовать формат времени localtime.

Настройка Linux для работы localtime

По умолчанию Linux использует формат хранения времени UTC, но если Ubuntu сбивает время Windows, вы можете очень просто заставить систему хранить в аппаратном таймере местное время. Во всех дистрибутивах, использующих Systemd, в том числе в Ubuntu для этого достаточно выполнить команду:

sudo timedatectl set-local-rtc 1 --adjust-system-clock


Чтобы посмотреть текущее состояние аппаратных и программных часов выполните:


Готово, теперь вы можете перезапустить компьютер и запустить Windows, чтобы убедиться, что время не сбивается при перезагрузке. В более старых системах Ubuntu, вам нужно отредактировать файл /etc/default/rcS и заменить UTC=yes на UTC=no. Вы можете сделать это командой:

sudo sed -i 's/UTC=yes/UTC=no/' /etc/default/rcS

Как вернуть обратно?

Опять же, вернуть все как было можно с помощью одной команды:

sudo timedatectl set-local-rtc 0

А в старых дистрибутивах Ubuntu:

sudo sed -i 's/UTC=no/UTC=yes/' /etc/default/rcS

Выводы

Вот и все. Теперь, если вы столкнетесь с проблемой Windows 10 - сбивается время Ubuntu или любом другом Linux дистрибутиве, вы уже будете знать, как её решить с помощью двух полностью работающих способов. Если у вас остались вопросы, спрашивайте в комментариях!

Мы разобрались, как настроить правильное время в Ubuntu и Windows, чтобы временные зоны не сбивались, но что такое временные зоны и зачем они нужны, на завершение видео про это:

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

Устанавливаем свой собственный формат даты и времени

Некоторые самые востребованные параметры указаны в таблице ниже.

Спецификатор Описание Пример (локаль en_US) Пример (локаль ru_RU)
День
%a день недели, сокр. Sun Вск
%A день недели, полный Sunday Воскресенье
%d число месяца (01—31) 06
%e число месяца, дополненное пробелом ( 1—31) 6
%j день года (001—366) 340
%u день недели (1—7, воскресенье = 7) 7
%w день недели (0—6, воскресенье = 0) 0
Неделя
%U номер недели (00—53, воскресенье — первый день недели) 49
%W номер недели (00—53, понедельник — первый день недели) 48
%V номер недели (01—53, понедельник — первый день недели) 49
Месяц
%m номер месяца (01—12) 12
%h или %b месяц, сокр. Dec Дек
%B месяц, полный December Декабрь
Год
%y год без столетия (00—99) 09
%C столетие (00—99) 20
%Y год включая столетие 2009
%g год (без столетия) понедельника недели %V 09
%G год (включая столетие) понедельника недели %V 2009
Дата
%D %m/%d/%y 12/06/09
%x дата в формате текущей локали 12/06/2009 06.12.2009
%F %Y-%m-%d 2009-12-06
Час
%l час в 12-часовой системе, дополненный пробелом ( 1—12) 3
%I час в 12-часовой системе (01—12) 03
%k час, дополненный пробелом ( 0—23) 15
%H час (00—23) 15
%p В английских локалях, AM («до полудня») или PM («после полудня»).

Другие статьи


Copyright © 2013-2017. All rights reserved.

Опубликованно Февраль 8, 2016 by Feanor184 в категории Ubuntu

Об Авторе

Постигаю Linux, учу Python, пытаюсь программировать)

4 комментарий(ев) к записи “ Пропадает панель часов в ubuntu ”

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

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

Убунту сложная и непривычная в использовании ОС. Но зато не страшен вирус)


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

Или, возможно, вы настроили сервер журналов на регулярную ротацию логов в вашей системе.

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

Вот почему важно установить правильный часовой пояс в системах Linux и синхронизировать часы с Интернетом.

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

Приведенные ниже шаги были протестированы в Ubuntu 18.04, однако они одинаковы для других систем на основе Ubuntu, которые используют службу timedc systemd.

Настройка синхронизации времени в Ubuntu

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

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

Во-первых, давайте посмотрим текущий часовой пояс в нашей системе Ubuntu с помощью команды «date»:

Как видно из вышеприведенного вывода, команда «date» показывает фактическую дату, а также текущее время.

Кроме того, вы можете посмотреть файл /etc/timezone, чтобы найти текущий часовой пояс.

Теперь посмотрим, синхронизированы ли часы с интернетом. Для этого просто запустите:

Как вы можете видеть, команда «timedatectl» отображает местное время, универсальное время, часовой пояс, а также то, синхронизированы ли системные часы с интернет-серверами и активен или неактивен systemd-timesyncd.service.

В моем случае системные часы синхронизируются с интернет-серверами.


Примечание: скриншот выше. Вот почему вы видите разные даты.

Если вы видите «System clock synchronized: значение установлено как no, служба timesyncd может быть неактивна.

Итак, просто перезапустите сервис и посмотрите, поможет ли это

Теперь проверьте статус сервиса timesyncd:

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

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

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

Теперь ваши системные часы будут синхронизироваться с интернет-серверами времени.

Изменить часовой пояс с помощью команды Timedatectl

Что если я хочу использовать другой часовой пояс, отличный от UTC? Это легко!

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

Вы увидите вывод, похожий на изображение ниже.


Вы можете установить желаемый часовой пояс (например, Asia/Kolkata), используя команду:

Еще раз проверьте, действительно ли был изменен часовой пояс с помощью команды «date»:

$ date
Tue Jul 30 17:52:33 IST 2019

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

Как вы заметили, я изменил часовой пояс с UTC на IST (индийское стандартное время).

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