Linux установка даты и времени

Стандарт времени

Есть два основных стандарта времени: местное (локальное) время (localtime) и Всемирное координированное время (Coordinated Universal Time, UTC). Местное время зависит от текущего часового пояса, а время UTC — это глобальное время, которое одинаково для всех и не зависит от часовых поясов. UTC иногда называют гринвичским временем (GMT), хотя это немного разные вещи.

Стандарт, который будет использоваться в аппаратных часах, выбирается операционной системой. По умолчанию Windows использует местное время, macOS использует UTC, а другие UNIX и UNIX-подобные системы используют разные стандарты. ОС, использующая стандарт UTC, обычно рассматривает аппаратные часы как UTC и вносит в них поправку для установки времени ОС при загрузке в соответствии с часовым поясом.

Если на машине установлено несколько операционных систем, все они будут получать текущее время от одних и тех же аппаратных часов: рекомендуется настроить их на использование UTC, чтобы избежать конфликтов. В противном случае, если аппаратные часы установлены на местное время, сразу несколько операционных систем могут попытаться скорректировать его, например, после перехода на летнее/зимнее время, что приведёт к избыточной коррекции; проблемы могут также возникнуть при перемещении между различными часовыми поясами и использовании одной из операционных систем для сброса системных/аппаратных часов.

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

$ timedatectl | grep local
RTC in local TZ: no

Переход на использование местного времени для аппаратных часов:

# timedatectl set-local-rtc 1

Переход на использование UTC для аппаратных часов:

# timedatectl set-local-rtc 

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

Во время запуска ядра, в момент загрузки драйвера RTC, значение системных часов может быть установлено по аппаратным часам. Произойдет ли это, зависит от аппаратной платформы, версии ядра и опций сборки ядра. Если это происходит, то в этот момент последовательности загрузки время аппаратных часов принимается за UTC и значение (N=0,1,2,..) будет установлено в 1.

Примечание:

  • Использование требует активной шины D-Bus. Поэтому использование этой команды под chroot (например, во время установки) может оказаться невозможным. В таких случаях можно вернуться к команде hwclock или использовать systemd-nspawn вместо chroot.
  • Если файл отсутствует, systemd по умолчанию считает, что аппаратные часы используют UTC.

UTC в Microsoft Windows

Это делается простым изменением в реестре: откройте и добавьте ключ со значением здесь:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal

Это можно сделать одной командой в командной строке, запущенной от имени администратора:

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

Также можно создать файл и импортировать его в реестр двойным щелчком мыши:

Windows Registry Editor Version 5.00


"RealTimeIsUniversal"=dword:00000001

Если Windows попросит обновить часы в связи с изменениями DST, позвольте ей это сделать. Часы останутся в UTC, как и ожидалось, скорректируется только отображаемое время.

После этого и может понадобиться обновить.

Если у вас проблемы со смещением времени, попробуйте переустановить и заново установить часовой пояс:

# timedatectl set-timezone Europe/Moscow

Исторические примечания

В очень старых версиях Windows это всё не работает из-за их багов. Более конкретно,

  • В 64-битных версиях Windows 7 и старых сборках Windows 10 существовала ошибка, из-за которой требовалось значение со значением вместо . Эта ошибка была исправлена в новых сборках, и теперь работает только .
  • До Vista SP2 существовала ошибка, которая сбрасывала часы на местное время после возвращения из ждущего или спящего режима.

Для этих операционных систем рекомендуется использовать местное время.

UTC в Ubuntu

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

Изменить это поведение можно так же, как описано выше.

Погрешность часов

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

При установке аппаратных часов с помощью рассчитывается новое значение дрейфа в секундах в день. Значение дрейфа вычисляется с помощью разницы между новым установленным значением и значением аппаратных часов непосредственно перед установкой, с учётом значения предыдущего значения дрейфа и времени последней установки аппаратных часов. Новое значение дрейфа и время, когда часы были установлены, записываются в файл , перезаписывая предыдущие значения. Таким образом, аппаратные часы могут быть скорректированы с учётом дрейфа при выполнении команды ; это также происходит при выключении, но только если демон включен, поэтому в Arch-системах, использующих systemd, этого не происходит.

Примечание: Если время аппаратных часов устанавливается повторно менее чем через 24 часа после предыдущей установки, дрейф не пересчитывается, поскольку считает прошедший период времени слишком коротким для точного расчёта дрейфа.

Если аппаратные часы продолжают терять или набирать время с большим шагом, возможно, что был записан некорректный дрейф (но это применимо только в том случае, если запущен демон hwclock). Это может произойти, если вы неправильно установили время аппаратных часов или ваш не совпадает со стандартом времени в Windows или macOS. Значение дрейфа можно сбросить, сначала удалив файл , а затем установив правильное время аппаратных и системных часов. Затем следует проверить правильность используемого стандарта времени.

Примечание: Если вы хотите использовать значение дрейфа, хранящееся в , даже при использовании systemd (например, вы не можете или не хотите использовать NTP), вы должны регулярно вызывать , например, создав задание cron.

Программные часы очень точны, но, как и большинство часов, не идеально точны и могут дрейфовать. Хотя и редко, системные часы могут потерять точность, если ядро пропускает прерывания. Существуют некоторые инструменты для повышения точности программных часов; смотрите .

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

1. Ссылка /etc/localtime

Наиболее популярный и поддерживаемый в большинстве дистрибутивов способ установки часового пояса для всех пользователей — с помощью символической ссылки /etc/localtime на файл нужного часового пояса. Список доступных часовых поясов можно посмотреть командой:

Сначала создайте резервную копию текущего часового пояса:

Для создания символической ссылки используйте команду ln -sf. Файл зоны нужно выбрать из доступных в системе. Например, мой часовой пояс — Украина, Киев, для установки будет использоваться следующая команда:

Теперь можете проверить текущее системное время с помощью утилиты date:

Если у вас установлена утилита rdate можно синхронизировать время с сетью:

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

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

Эта настройка сохраняется только для текущего сеанса командной оболочки. Чтобы сменить часовой пояс linux для определенного пользователя тоже нужно использовать переменную среды TZ. Только ее нужно добавить в файл ~/.environment. Этот файл читается по умолчанию при входе в систему, а значит переменная будет доступна всем программам:

Готово, теперь вы знаете как выполняется настройка часового пояса linux для определенного пользователя.

2. Настройка с помощью tzdata

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

В Red Hat Linux:

В CentOS и Fedora:

В Slackware или FreeBSD:

В Ubuntu:

В большинстве случаев вы увидите подобное диалоговое окно:

Здесь просто нужно выбрать нужный часовой пояс и нажать кнопку Enter. После этого для окончательного применения настроек нужно будет перезагрузить систему.

3. Настройка с помощью systemd

В systemd есть своя утилита для настройки даты и часового пояса. Чтобы узнать текущее состояние выполните:

Для просмотра всех доступных временных зон выполните такую команду:

А для установки нужного часового пояса используйте команду set-timezone, например, тот же Europe/Kiev:

4. Настройка часового пояса в GUI

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

В KDE аналогично можно установить часовой пояс в настройках системы. Запустите утилиту настроек, откройте пункт Локализация, перейдите в раздел Дата и время, а затем откройте вкладку Часовой пояс:

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

How to Sync Hardware Clock

RTC stands for Real-Time Clock, another name for the hardware clock in your computer. Your system has a tiny quartz crystal and a battery that keeps time at times when the system disconnects from a network.

Set Hardware Clock to Sync to Local Timezone

To have your Real-Time Clock synchronize to your local timezone enter:

You may get an error in this mode, since updating the hardware clock to the local timezone is unsupported.

Set the Hardware Clock to Sync with UTC

If necessary, you can set your hardware clock to synchronize with UTC by entering the following command:

As with the previous command, there is no confirmation that the change has applied. You need to verify the change manually by using the command.

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

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

sudo date 03261721
 password for user: 
Fri 26 Mar 2021 05:21:00 PM UTC

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

  • 03 — месяц март;
  • 26 — текущее число дня месяца;
  • 17 — часы;
  • 21 — минуты;

То есть базовый формат утилиты date следующий — MMDDhhmm.

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

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

sudo locale-gen ru_RU.UTF-8
sudo update-locale LANG=en_US.UTF-8 LC_TIME="ru_RU.UTF-8"

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

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

sudo timedatectl set-time "2021-03-26 18:09:30"

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

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

Сервер времени ntp использует в своей работе одноименный протокол — Network Time Protocol, которому для работы необходим UDP порт 123. Так что перед установкой и настройкой службы времени убедитесь, что на фаерволе открыт этот порт.

Устанавливаем сервер ntp:

Теперь отредактируем файл конфигурации /etc/ntp.conf , удалив все лишнее:

Параметр Описание
server Список серверов для синхронизации времени
driftfile Задает адрес файла, в котором хранится история изменений времени во время синхронизации. Если по каким-то причинам синхронизация времени с внешними источниками станет невозможна, служба времени изменит системные часы в соответствии с записями в этом файле.
restrict 127.0.0.1

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

restrict  192.168.10.0 mask 255.255.255.0
restrict default nomodify notrap nopeer noquery Параметры указывают на то, что клиентам данного сервиса времени запрещено изменять его настройки, получать его статус. Они могут только забрать с него значения точного времени.
disable monitor Данный параметр повышает безопасность, предотвращая использования одной из уязвимостей сервиса ntpd, которую можно использовать для проведения DDoS атак.
logfile Указывает путь к файлу с логами сервиса

После завершения редактирования файла настроек запускаем службу синхронизации времени:

Проверяем запустился ли сервер:

Все в порядке, служба слушает положенный порт 123. Проверим еще на всякий случай системные логи centos:

Все в порядке, сервер запущен и полностью готов к работе.

Теперь настроим автозапуск ntp вместе с загрузкой centos:

Наблюдать за работой службы ntp можно с помощью команды ntpq -p:

Что значат все эти данные:

remote Адрес удаленного эталона времени, с которого была синхронизация
refid Указывает, откуда каждый эталон получает точное время. Это могут быть другие сервера времени, система GPS и другое
st Stratum (уровень) это число от 1 до 16, которое указывает на точность эталона. 1- максимальная точность, 16 — сервер недоступен. Уровень вашего сервера будет равен уровню наименее точного удаленного эталона плюс 1.
poll Интервал в секундах между опросами
reach Восьмеричное представление массива из 8 бит, отражающего результаты последних восьми попыток соединения с эталоном. Бит выставлен, если удаленный сервер ответил.
delay Время задержки ответа на запрос о точном времени
offset Разница между вашим и удаленным сервером
jitter Дисперсия (Jitter) — это мера статистических отклонений от значения смещения (поле offset) по нескольким успешным парам запрос-ответ. Чем меньше значение дисперсии, тем лучше, поскольку позволяет точнее синхронизировать время.

Set Time, Date Timezone in Ubuntu Older Versions From Command Line

Older Ubuntu versions may not support the command. Find out how to get the Ubuntu version.

You can still display and adjust system time setting from a command line by using the commands listed below:

To display the date and time of the operating system use:

Change the date of the operating system by typing:

Replace YY-MM-DD with Year-Month-Day, and HH:MM:SS with Hour:Minute:Second. You can set just the date or only the time, depending on your needs.

Display the time kept by the hardware clock (RTC) by using any of the following commands:

or

or

Note: Some versions may not support the –-verbose option, and it may not work on a virtual machine. The hardware clock may not hold the same time as the operating system.

Display the RTC time in UTC format:

Change the time kept by the RTC:

Set OS time based on the hardware clock (RTC):

This command tells the system to set the HC (hardware clock) to SYS (system):

Set the RTC based on the operating system time:

Use this command to reverse the previous process.

Conclusion

This guide showed you how to set the time,  date, and timezone on your Ubuntu system. As we learned, setting your system to synchronize with NTP is typically the best course of action.

NTP[править]

Используется по-умолчанию в большинстве дистрибутивов ALT. Отличается высокой безопасностью и как следствие — некоторыми недостатками, самый неприятный из которых — это медленный старт, доходящий в некоторых случаях до суток. Сам демон имеет название ntpd, как и аналогичный из пакета ntp, однако не является совместимым с ним ни по параметрам запуска, ни по средствам контроля, ни по конфигурационному файлу.

пакет ntpправить

Пакет является эталонной реализацией протокола ntp и имеет долгую историю. Считается не очень безопасным ввиду лидерства по количеству закрытых за историю CVE. В ALT пакет состоит из нескольких подпакетов. Непосредственно к синхронизации имеют отношение два, а третий полезен для контроля состояния ntpd.

ntpdateправить

Утилита, позволяющая однократно посмотреть время на каком-либо NTP-сервере (не обязательно ntpd) и/или синхронизировать с ним системное время. Если запущен ntpd, требуется использовать ключ -u при запуске.

ntpqправить

Утилита, позволяющая посмотреть статус работающего ntpd, как локального, так и удалённого.

пакет chronyправить

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

apt-get install chrony
systemctl start chronyd
systemctl enable chronyd

Является клиентом SNTP, не может быть сервером NTP.

Using timedatectl to Control the System Time and Date

Display Current Date and Time with timedatectl

To display the current time and date information use the command:

The output provides local and universal time, timezone, and informs you if the synchronization process is enabled.

Sync Time to NIST Atomic Clock

You can set your Ubuntu system to synchronize to the NIST atomic clock:

If you need to turn off NTP synchronizing to be able to adjust the time and date manually, use:

Note: NTP stands for Network Time Protocol.

How to Change the Time

This simple command sets the time to your specifications. For it to work, the automatic time synchronization needs to be disabled as discussed previously.

The time format should be in HH:MM:SS (Hours, Minutes, Seconds).

The same command is used to define the date as well:

The date should be formatted as YYYY-MM-DD (Year, Month, and Day).

How to Set a Timezone in Ubuntu

The command additionally allows you to synchronize your systems with a timezone of your choosing. These are the steps:

1. To list out the names of the timezones:

2. Find the location closest to you, then enter the following:

3. Replace Region/Location with a name from the timezone list.

The timezone list is extensive. You may want to filter the list by keyword, using :

The | is a pipe symbol, usually next to the Enter key. You can substitute keyword for any keyword you wish, such as America, Asia, or New_York.  If you get an error, double-check your spelling and make sure that you are using capital letters correctly.

How to Set Universal Time (UTC) in Ubuntu

UTC stands for Coordinated Universal Time and is used for scientific calculations and synchronizing between timezones across the globe. You can synchronize your system by entering the following command:

There is no immediate output; however, you can check if the settings applied by using .

Note: GMT and Zulu Time are often used to refer to UTC. They are equivalent terms when fractions of a second are not relevant.

Как задать время через консоль в Linux?

Как задать время через консоль в Linux? Как установить дату в Linux?
Кроме графического интерфейса, у вас есть возможность делать все необходимые действия через терминал. Для этого есть утилита date.
Самое первое, что может нам понадобиться — просмотр текущей даты и времени. Узнаём время с помощью команды
Linux установка даты
Linux задать время из консоли
Задать время и дату одновременно:
Если указать только дату без времени, то время будет установлено в 0 часов 0 минут:
Выдаст результат:
Однако, сразу после этих команд, стсемное время возвращается к предыдущему значению. Поэтому нужно вначале установить аппаратные часы. Узнать, сколько времени на аппаратных часах, можно командой:
ранее эта команда называлась clock.
Установить аппаратные часы можно командой:
После чего надо засинхронизировать системные часы с аппаратными:
По идее, если временная зона настроена как локальная, после этой команды время на компьютере будет таким же как и на аппаратных часах.
Если вы сталкиваетесь с ошибкой:
Учтите, что время и дату имеет право изменять только root-пользователь. Поэтому задавайте время с sudo:
Текущее системное время отображается в строке Local Time. Чтобы изменить дату, используйте опцию -set-time. Синтаксис передаваемого ей параметра такой: ГГГГ-ММ-ДД ЧЧ:ММ:СС. Думаю тут понятно и без комментариев.
Дополнительную информацию вы можете получить командой

Multiple Boot Systems Time Conflicts

Operating systems store and retrieve the time in the hardware clock located on your motherboard so that it can keep track of the time even when the system does not have power. Most operating systems (Linux/Unix/Mac) store the time on the hardware clock as UTC by default, though some systems (notably Microsoft Windows) store the time on the hardware clock as the ‘local’ time. This causes problems in a dual boot system if both systems view the hardware clock differently.

The advantage of having the hardware clock as UTC is that you don’t need to change the hardware clock when moving between timezones or when Daylight Savings Time (DST) begins or ends as UTC does not have DST or timezone offsets.

Changing Linux to use local time is easier and more reliable than changing Windows to use UTC, so dual-boot Linux/Windows systems tend to use local time.

Since Intrepid (8.10), UTC=yes is default.

Make Windows use UTC

Note: This method was not initially supported on Windows Vista and Server 2008, but came back with Vista SP2, Windows 7, Server 2008 R2 and Windows 8/8.1.

To make MS Windows calculate the time from the hardware clock as UTC.

Create a file named WindowsTimeFixUTC.reg with the following contents and then double click on it to merge the contents with the registry:

Windows Registry Editor Version 5.00


     "RealTimeIsUniversal"=dword:00000001

Note: Windows Time service will still write local time to the RTC regardless of the registry setting above on shutdown, so it is handy to disable Windows Time service with this command (if time sync is still required while in Windows use any third-party time sync solution):

sc config w32time start= disabled

Reversing the change

You can create a file with the following contents and then double-click it to merge in the original changes, as above:

Windows Registry Editor Version 5.00


     "RealTimeIsUniversal"=-

If Windows Time service was disabled, enable it again with the command:

sc config w32time start= demand

Make Linux use ‘Local’ time

To tell your Ubuntu system that the hardware clock is set to ‘local’ time:

Pre-Ubuntu 15.04 systems (e.g. Ubuntu 14.04 LTS):

  1. edit /etc/default/rcS
  2. add or change the following section
    # Set UTC=yes if your hardware clock is set to UTC (GMT)
    UTC=no

Какое время бывает в Linux?

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

Немного теории. В любом компьютере есть два вида часов. Одни аппаратные (ЧРВ — часы настоящего времени или RTC — real time clock), которые работают даже при выключенном блоке кормления, на это у них есть батарейка на материнской плате. Другие программные, то есть часы (прибор для определения текущего времени суток и измерения продолжительности временных интервалов в единицах, меньших, чем одни сутки) операционной системы. Сведения этих часов могут различаться. При этом программные часы опираются на показания аппаратных при старте операторной системы. А в дальнейшем могут синхронизироваться через интернет с эталонными и корректировать ход аппаратных.

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

Синтаксис команды date

Программа может выполнятся от имени обычного пользователя. Стандартный синтаксис команды (квадратные скобки обозначают необязательное наличие):

date …

Ниже представлена таблица с часто применяемыми опциями для date.

Опция Длинный вариант Значение
-d STRING —date=STRING Вывод даты по указанной строке (например ‘yesterday’, ‘tomorrow’, ‘last monday’).
-I —iso-8601 Вывод даты в формате ISO 8601. FMT по умолчанию содержит ‘date’. Также может содержать ‘hourse’, ‘minutes’, ‘seconds’, ‘ns’ для отображения соответствующих значений и часовой пояс относительно UTC рядом с датой.
 —rfc-3339=FMT Вывод даты в формате RFC 3339. FMT по умолчанию содержит ‘date’. Также может содержать ‘seconds’ и ‘ns’ для отображения секунд или наносекунд.
 -r FILE —reference=FILE Вывод даты последней модификации указанного файла в формате по умолчанию.
-u —utc Вывод UTC-даты

Аргумент ФОРМАТ отвечает за форматирование вывода даты. Для его указания необходимо поставить знак «+» и написать нужную маску. Наиболее популярные форматы:

Формат Значение
%% Знак процента
%a День недели текущей локали в короткой форме («Чтв»)
%A День недели текущей локали в длинной форме («Четверг»)
%b Месяц года текущей локали в короткой форме в родительном падеже («янв»)
%B Месяц года текущей локали в длинной форме в родительном падеже («января»)
%c Дата и время текущей локали без указания часового пояса
Первые две цифры текущего года
%d Числовой день месяца с ведущим нулём
%D Дата в формате %m/%d/%y
%e День месяца; аналог %_d
%F Дата в формате %Y-%m-%d
%h Аналог %b
%H Часы (00..23)
%I Часы (01..12)
%j День года (001..366)
%m Месяц (01..12)
%M Минуты (00..59)
%n Новая строка
%q Квартал года
%S Секунды (00..59)
%t Знак табуляции
%T Время в формате %H:%M:%S
%u Числовой день недели; 1 — понедельник
%x Дата в локальном формате
%X Время в локальном формате
%Z Аббревиатура временной зоны

Troubleshooting

Is NTP installed?

Run dpkg-query --list ntp\* and look for ntp-simple (pre 7.04) or ntp. The ntpdate and ntp-doc packages may also be useful.

Which configuration file is it using?

By default NTP uses /etc/ntp.conf. If /etc/ntp.conf.dhcp exists then the NTP daemon assumes you’re using DHCP to redefine the NTP settings and it uses that file instead.

How do I configure NTP to use DHCP

Your DHCP server must be configured to supply NTP servers (man dhcpd.conf may be helpful).

Your client must be configured to use the supplied NTP servers. To do this, add ntp-servers to the request (or even require) line in /etc/dhcp3/dhclient.conf. You may wish to use the default and prepend features as well to provide default/additional NTP servers. Please see man dhclient.conf and man dhcp-options for details.

Is NTP running?

NTP most commonly ‘fails’ if it cannot resolve the servers in its configuration file at startup (this can happen if DNS isn’t available during boot). Also, if NTP is unable to keep the local clock reasonably accurate it gives up and terminates (see below).

Try sudo /etc/init.d/ntp status to check if NTP is running, and sudo /etc/init.d/ntp restart to restart it if necessary.

I have various systems on unreliable networks so I use a simple script to bounce NTP if needed:

$ cat /etc/cron.hourly/BOUNCE-NTP
#!/bin/sh

/usr/bin/ntpq -np | /bin/grep '^\*' > /dev/null || ( /usr/bin/ntpq -np ; /etc/init.d/ntp restart )

Which servers are you using?

Run grep ^server /etc/ntp.conf or grep ^server /etc/ntp.conf.dhcp to figure out which servers you’re trying to use

If your network or ISP have an NTP server they should be listed here. Failing that, try ntp.ubuntu.com and/or the NTP pool servers (http://www.pool.ntp.org/). 3 or 4 servers is plenty, and don’t use a server without permission (see http://en.wikipedia.org/wiki/NTP_vandalism).

Can these servers be resolved?

If host $servername fails then you may have DNS issues that need to be fixed ($servername is the name of a server listed in your configuration file, see above).

Can these servers be reached?

If ntptrace $servername fails then you may have routing/firewall issues that need to be fixed ($servername is the name of a server listed in your configuration file, see above). NTP uses UDP port 123, make sure these packets can are properly NAT-ed through your gateway if necessary.

What’s NTP up to?

ntpq --numeric --peers

—numeric removes the DNS lookups. You can leave it off, but don’t be surprised if the resolved names don’t match names in the ntp.conf file.

Ideally you want a * and a few +‘s in the fist column and a reach of 377 (see )

delay is in milliseconds. It should be < 1 for local network servers, < 10 for ISP servers over DSL and ideally < 100 for wireless. offset is in milliseconds and is the current best guess of the time difference between your system and the server. The smaller the better! jitter is an estimate the the local clock frequency error. The smaller the better. If it’s consistently high then your system may be drifting (see below)

NTP attempts to fix your local clock to keep accurate time. If your local clock drifts too fast (usually HW problems or IRQ lockups or somesuch) then NTP either keeps resetting your clock or gives up and terminates. Fix the drift problem and NTP will behave.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: