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.
Об Авторе
Постигаю 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 (индийское стандартное время).
Читайте также: