Debian смена часового пояса

Debian смена часового пояса

Зачем нужно знать точное время?

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

Человек всегда стремился знать точное время. Еще в древние времена люди выдумывали различные способы узнать время. Как они это только не делали? Они узнавали его по солнцу, по воде, по песку, по звездам и еще кучей различных способов.

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

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

Тут все просто и сложно одновременно. Весь земной шар “разбит” на часовые пояса. За это скажем спасибо канадскому инженеру С.Флеммингу, который предложил поделить всю планету на 15-ти градусные области. Это деление он предложил начать почему-то с английского Гринвича. Наверное, просто был патриотом своей страны. Такое деление привело к появлению системы координат времени GMT , позволяющей людям легко и просто узнавать время в любой точке земного шара. С приходом GMT тогда спорить никто не стал и страны просто приняли ее для своего же удобства. Но удобство это было не постоянным, так как по своей сути GMT очень сильно зависела от скорости вращения земного шара и такое непостоянство времени не способствовало удобству, ведь приходилось всегда делать поправку на неравномерность вращения планеты.

Спустя несколько десятилетий люди пришли к тому, что стали использовать “фиксированное время” и обозвали эту новую, более удобную систему UTC . В настоящее время именно эта система подсчета времени и используется во всем мире сейчас.

Как работает время в операционной системе Debian?

В Debian как и в любой другой Linux-системе используется одна “модель” формирования времени. Существует 2 времени: системное, его еще называют аппаратными часами, и “относительное” (относительное – это потому что оно немного отличается относительно часового пояса). В BIOS компьютера должно быть выставлено системное время, которое должно совпадать с UTC +0, так как в BIOS нет сдвига относительно часового пояса. Да и к тому же это логично. Компьютер может менять свое местоположение и с ним свой часовой пояс, а эталонное время должно быть всегда единым. Пусть не всегда точным, но единым. Точность системного времени должно обеспечиваться его синхронизацией с серверами точного времени. Я, когда нужно перенести сайт на другой хостинг всегда первым делом настраиваю часовой пояс и синхронизацию времени, так как без этого поиск ошибок по логам превращается в нереально нудное и долгое занятие.

Как поменять часовой пояс в Debian?

Есть 2 пути: простой и сложный. В большинстве случаев хватает простого, который и будет рассмотрен ниже. Кстати, если Вы используете VPS -сервер, то настраивать часовой пояс вам точно придется.

За установку часового пояса отвечает команда:

Утилита имеет псевдографический интерфейс и переведена на большинство языков, в том числе и русский. После ее запуска необходимо выбрать свой регион и нажать Enter. Для города Омска она в конце показала вот такой вывод:

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

Данная статья является частью единого цикла статьей про сервер Debian.

Цели статьи

  1. Показать, как смотреть и настраивать системное время в Debian.
  2. Рассказать, как управлять часовыми поясами.
  3. Настроить автоматическую синхронизацию времени через интернет.
  4. Показать настройку своего ntp сервера в информационной системе.

Введение

Во время установки Debian, сервер автоматически настраивает системное время на основе информации из bios. Инсталлятор предлагает вам выбрать только часовой пояс. При этом, если вы не правильно указали часовой пояс (timezone), его без проблем можно изменить после установки.

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

Читайте также:  Crown cm ps500w plus 500w

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

  • Точное время на сервере необходимо для корректного логирования всех событий и последующего расследования инцидентов. Более того, одинаковое время должно быть на всех серверах, которые участвуют в работе информационной системы. Если это не так, то расследование инцидентов становится затруднительным.
  • В доменной середе Windows для корректной работы протокола аутентификации Kerberos требуется примерно одинаковое время на всех участниках домена. Если ваш сервер Debian является членом домена, важно, чтобы его время не сильно отличалось от времени контроллера домена. Его нужно обязательно синхронизировать с ним.
  • На сервере может располагаться какой-то сервис, который взаимодействует с пользователями. Например, новостной сайт, где в статьях указано точное время публикации. Если неправильно настроить часы или timezone, может возникнуть ситуация, когда для некоторых пользователей опубликованные материалы будут отображаться со временем из будущего.
  • Планировщик cron в своей работе использует системные часы. Если вы хотите предсказуемое поведение запланированных задач, время и часовой пояс должны быть настроены правильно.

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

Как посмотреть и узнать системное время

Начнем с самого простого — подключимся к серверу по ssh и посмотрим в консоли на текущее время. Сделать это можно с помощью простой команды date.

Wed день недели, в данном случае среда
21 Aug число и месяц, 21-е августа
2019 год
03:38:12 время в формате часы:минуты:секунды
PM обозначение времени суток, am или pm, до или после полудня
MSK часовой пояс, он же timezone

Как вы видите, у нас установлен часовой пояс MSK, текущая дата и время в 12-ти часовом формате. Это не очень удобно. Если вам нужно посмотреть время в 24-х часовом формате, добавьте отображение +%R к date.

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

Также есть еще один способ получить полную информацию о времени сервера Debian — воспользоваться командой timedatectl.

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

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

Здесь 08 — месяц, 21 — число, 15 — час, 55 — минуты. Таким образом, формат команды получился вот такой — date MMDDhhmm .

То же самое, только через timedatectl.

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

С помощью команды date так же можно посмотреть текущее время системы без учета часового пояса, то есть время по UTC.

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

Установка, настройка и изменение часового пояса

Выше я рассказал, как узнать, в каком часовом поясе находятся системные часы сервера debian. В моем случае timezone установлена как MSK, то есть московский часовой пояс. Если у вас указан другой часовой пояс, а вы, к примеру, хотите установить московский, то делается это просто. Смена часового пояса выполняется через timedatectl:

Посмотреть список всех timezоne, доступных для установки на сервере, можно командой:

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

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

Timedatectl для настройки времени в Debian

В большинстве современных дистрибутивов с systemd служба синхронизации времени уже присутствует в дефолтной установке и реализуется через systemd-timesyncd. Эта служба призвана заменить ntpd. Со слов разработчиков, она легче и быстрее, чем ntpd, плюс интегрирована в systemd, поэтому для автоматической синхронизации времени рекомендуется использовать именно ее.

Тут важно понимать, что systemd-timesyncd не может работать в качестве сервера времени, который мы настроим ниже. Так что, если у вас одиночный сервер, вам вполне подойдет timesyncd. Если же вы хотите использовать свой сервер времени, то надо настраивать ntp.

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

Читайте также:  Captcha not ready что значит

Синхронизация времени уже включена и работает через timesyncd. Посмотрим ее статус.

В принципе, больше ничего делать не нужно. Синхронизация времени через интернет уже настроена и работает. Время обновляется с сервера 2.debian.pool.ntp.org. Для надежности, можно убедиться, что служба работает, плюс, добавим ее сразу в автозагрузку, если ее там нет.

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

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

Покажу теперь простую утилиту ntpdate, с помощью которой можно разово синхронизировать время, не автоматически. Для начала ее нужно установить в систему.

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

В данном случае pool.ntp.org — адрес сервера времени. Можно использовать любой. Все, время синхронизировано и никаких автоматических служб не запущено.

Если у вас ntpdate выдает ошибку — the NTP socket is in use, exiting, значит у вас уже установлена и запущена служба ntp, которая заняла udp порт 123, необходимый для работы ntpdate. Установкой и настройкой этой службы мы и займемся далее. Также, если ntpdate не работает, посмотрите материал, может это ваш случай.

Для обновления времени сервера можно воспользоваться службой ntp. Ее так же надо установить отдельно.

Это старая проверенная служба времени, которую использовали еще задолго до появления systemd и его юнитов. Запустим ее и добавим в автозагрузку.

После запуска она сразу же автоматически синхронизирует время. Проверим статус службы ntp в Debian.

Синхронизация времени через ntp заработала сразу же. Дополнительная настройка не нужна, если вас не интересует свой сервер времени, который мы настроим ниже.

При этом, для проверки статуса службы времени ntp можно использовать утилиту ntpq. Посмотрим статус синхронизации.

Поясню значения каждого столбца.

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

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

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

Файл конфигурации ntp — /etc/ntp.conf. Привожу минимальную достаточную конфигурацию для своего сервера времени.

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

После изменения конфигурации, перезапустим ntp и проверим статус службы.

Теперь убедимся, что она запущена.

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

Теперь другие компьютеры и серверы могут синхронизировать свои часы с нашего сервера Debian, где мы настроили ntp службу в качестве источника времени для остальных.

Если в логе /var/log/ntp.log увидите сообщение — kernel reports TIME_ERROR: 0x2041: Clock Unsynchronized, не обращайте внимание. Это не ошибка, а информационное сообщение, говорящее о том, что в момент запуска ntp ядро еще не синхронизировало свое время.

Заключение

Кратко подведу итог опубликованного материала. Мы рассмотрели практически все, что связано со временем на сервере Debian. Причем захватили нюансы systemd, который все больше забирает на себя функционала.

Я показал как устанавливать время, изменять часовой пояс, разово синхронизировать время с помощью ntpdate и настраивать сервер времени ntpd в локальной сети.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Debian.

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

Читайте также:  Excel не отображает скрытые строки

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

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

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

Операционная система Linux хранит и обрабатывает системное время в специальном Unix формате — количество секунд прошедших с полуночи первого января 1970 года. Эта дата считается началом эпохи Unix. И используется не ваше локальное время, а время по гринвичскому меридиану.

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

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

Настройка часового пояса в /etc/localtime

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

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

cp /etc/localtime /etc/localtime.bak

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

ln -sf /usr/share/zoneinfo/Ukraine/Kyiv /etc/locatime

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

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

/usr/bin/rdate -s time-a.nist.gov

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

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

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

/.environment. Этот файл читается по умолчанию при входе в систему, а значит переменная будет доступна всем программам:

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

Другие консольные утилиты

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

В Red Hat Linux:

В CentOS и Fedora:

В Slackware или FreeBSD:

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

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

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

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

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

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

Выводы

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

На завершение видео, в котором подробно рассказано, что такое часовые пояса и зачем они нужны:

Ссылка на основную публикацию
Adblock detector