- Как изменить часовой пояс Linux
- Как работает время в Linux?
- Настройка часового пояса в linux
- 1. Ссылка /etc/localtime
- 2. Настройка с помощью tzdata
- 3. Настройка с помощью systemd
- 4. Настройка часового пояса в GUI
- Выводы
- Проблема с часами в часовых поясах отличных от Europe/Moscow
- Так же замечены другие проблемы:
- Решение:
- Диагностика неисправности
- Исправление неисправности
- Последовательность настройки времени:
- Как изменить часовой пояс в Linux
- Посмотреть текущий часовой пояс
- Команда date
- Команда timedatectl
- ls -lh /etc/localtime
- Получить список доступных часовых поясов
- Утилита tzselect
- Утилита timedatectl
- Изменить часовой пояс
- Изменяем часовой пояс утилитой timedatectl
- Изменяем часовой пояс настройкой /etc/localtime
- Изменить часовой пояс только для одной программы или текущей сессии
- Изменить часовой пояс через графические утилиты
- Заключение
Как изменить часовой пояс Linux
Мы очень часто пользуемся временем в Linux, начиная от простой задачи узнать сколько сейчас времени, до более сложной — посмотреть логи или узнать когда произошло то или иное событие в системе. Все завязано на времени, поэтому очень важно, чтобы часы шли правильно.
Наша планета разделена на часовые пояса, это было сделано с одной простой целью, чтобы время в любой точке планеты соответствовало солнечному времени. Время между этими зонами отличается на час и всего таких поясов — 24, за эталон взято время по нулевому, Гринвичскому меридиану.
Поэтому в определенный момент время в разных участках планеты будет отличаться на час. В этой небольшой статье мы рассмотрим как изменить часовой пояс Linux, чтобы операционная система правильно работала со временем и могла правильно его синхронизировать через интернет.
Как работает время в Linux?
Операционная система Linux хранит и обрабатывает системное время в специальном Unix формате — количество секунд прошедших с полуночи первого января 1970 года. Эта дата считается началом эпохи Unix. И используется не ваше локальное время, а время по гринвичскому меридиану.
Для преобразования времени по Гринвичу в региональное время используется часовой пояс. Это преобразование выполняется для каждого пользователя. Это необходимо, чтобы каждый пользователь мог настроить для себя правильное по его временной зоне время. Такое поведение просто необходимо на серверах, когда на одной машине могут работать люди из разных частей мира.
По умолчанию в системе может быть установлен неправильный часовой пояс, это приведет к путанице в логах событий, да и другим трудностям. Но все это легко исправить. Дальше мы рассмотрим несколько способов изменить часовой пояс Linux.
Настройка часового пояса в linux
1. Ссылка /etc/localtime
Наиболее популярный и поддерживаемый в большинстве дистрибутивов способ установки часового пояса для всех пользователей — с помощью символической ссылки /etc/localtime на файл нужного часового пояса. Список доступных часовых поясов можно посмотреть командой:
Сначала создайте резервную копию текущего часового пояса:
cp /etc/localtime /etc/localtime.bak
Для создания символической ссылки используйте команду ln -sf. Файл зоны нужно выбрать из доступных в системе. Например, мой часовой пояс — Украина, Киев, для установки будет использоваться следующая команда:
ln -sf /usr/share/zoneinfo/Europe/Kiev /etc/localtime
Теперь можете проверить текущее системное время с помощью утилиты date:
Если у вас установлена утилита rdate можно синхронизировать время с сетью:
sudo rdate -s time-a.nist.gov
Осталось только синхронизировать ваши аппаратные часы с новыми настройками, для этого выполните команду:
Если нужно изменить часовой пояс только для определенной программы или скрипта, просто измените для нее переменную окружения TZ, например:
Эта настройка сохраняется только для текущего сеанса командной оболочки. Чтобы сменить часовой пояс linux для определенного пользователя тоже нужно использовать переменную среды TZ. Только ее нужно добавить в файл ~/.environment. Этот файл читается по умолчанию при входе в систему, а значит переменная будет доступна всем программам:
Готово, теперь вы знаете как выполняется настройка часового пояса linux для определенного пользователя.
2. Настройка с помощью tzdata
Если вы не хотите использовать описанный выше способ, можно воспользоваться специальными утилитами. Вот только в разных дистрибутивах используются свои утилиты. Рассмотрим варианты для самых популярных дистрибутивов.
В большинстве случаев вы увидите подобное диалоговое окно:
Здесь просто нужно выбрать нужный часовой пояс и нажать кнопку Enter. После этого для окончательного применения настроек нужно будет перезагрузить систему.
3. Настройка с помощью systemd
В systemd есть своя утилита для настройки даты и часового пояса. Чтобы узнать текущее состояние выполните:
Для просмотра всех доступных временных зон выполните такую команду:
А для установки нужного часового пояса используйте команду set-timezone, например, тот же Europe/Kiev:
sudo timedatectl set-timezone Europe/Kiev
4. Настройка часового пояса в GUI
В дистрибутиве Ubuntu и других, использующих Gnome, настройка часового пояса Linux может быть выполнена прямо в параметрах системы. Для этого выберите пункт Сведения о системе, затем Дата и время, выберите свое местоположение на карте, или наберите название для поиска в поле ввода:
В KDE аналогично можно установить часовой пояс в настройках системы. Запустите утилиту настроек, откройте пункт Локализация, перейдите в раздел Дата и время, а затем откройте вкладку Часовой пояс:
Остается выбрать часовой пояс в списке и нажать кнопку Применить. Здесь уже изменения должны проявиться моментально.
Выводы
Теперь вы знаете как выполняется установка часового пояса в linux и сможете настроить не только свой домашний компьютер но и сервер с множеством пользователей, которым нужен отдельный часовой пояс для правильного местного времени. Если у вас остались вопросы, спрашивайте в комментариях!
На завершение видео, в котором подробно рассказано, что такое часовые пояса и зачем они нужны:
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Проблема с часами в часовых поясах отличных от Europe/Moscow
Время настраивается на клиенте и на сервере, синхронизируется. Но после нескольких перезагрузок ОС на клиенте время смещается.
1) время смещается на 6 часов в будущее;
2) время смещается на несколько дней в прошлое.
Так же замечены другие проблемы:
Часовой пояс был выставлен через » dpkg-reconfigure tzdata » на Almaty (Алма-Ата).
Если время устанавливается через fly-admin-date , то:
1) слетает настройка UTC , т.к. fly-admin-date не понимает сделанные настройки как через hwclock —utc , так даже если сам выставляет UTC.
2) часовой пояс через fly-admin-date сбрасывается на Калининград.
3) при нажатие на кнопку «Сохранить» в fly-admin-date последствия сложно предсказать.
4) нельзя удалить пакет fly-admin-date без fly-all-main .
Решение:
Не устанавливать дату и время через виджет Astra Linux «Дата и время».
Диагностика неисправности
1) Команда « cat /etc/adjtime » должна вернуть в последней строке «UTC».
2) Команда « cat /etc/localtime » должна вернуть в последней строке «ALMT-6».
3) Команда « hwclock —debug » должна сообщить, что «Аппаратные часы выставлены по UTC времени». Время прочитанное с аппаратных часов на 6 часов меньше, чем местное время по Астане.
4) Команда « date » должна вернуть местное время по Астане (часовой пояс ALMT).
Исправление неисправности
1) Если « cat /etc/adjtime » вернет «LOCAL», то необходимо выполнить «hwclock —utc».
2) Если « cat /etc/localtime » вернет что-то отличное от «ALMT-6» и команда «date» между временем и годом выводит часовой пояс отличный от «ALMT», то необходимо выполнить команду «dpkg-reconfigure tzdata» и выбрать часовой пояс «Азия/Almaty».
3) Если « hwclock —debug » сообщит, что «Аппаратные часы выставлены по местному времени», то необходимо выполнить «hwclock —utc».
4) Если « hwclock —debug » вернет время прочитанное с аппаратных часов отличающееся от местного по Астана, то необходимо убедиться, что часовой пояс выставлен правильно, что время по команде «date» выставлено правильно, выполнить команду «hwclock —systohc».
4) Если команда «date» не возвращает местное время по Астане, то необходимо убедиться, что часовой пояс выставлен правильно и выполнить команду «date MMDDhhmmCCYY», где MM — месяц, DD — день, hh — час, mm — минута, CCYY — год.
Последовательность настройки времени:
Установить часовой пояс « dpkg-reconfigure tzdata » на «Азия/Almaty».
Установить местное время « date MMDDhhmmCCYY », например « date 021517452018 » означает установить дату по местному времени на 15 февраля 2018 года 17:45.
Считать время в BIOS как время по UTC, для чего выполнить команду « hwclock —utc —systohc » .
Установить время в BIOS, выполнить команду « hwclock —systohc ».
Перезагрузить компьютер « reboot ».
Пройтись по пунктам «Диагностика неисправности» и убедиться в правильности выставленных настроек.
Как изменить часовой пояс в Linux
Часовой пояс в Linux обычно настраивается во время установки системы. Иногда пользователю может потребоваться его изменить. Способ изменения часового пояса (его еще называют временной зоной) может зависеть от конкретного дистрибутива. Рассмотрим некоторые из способов изменения часового пояса.
Посмотреть текущий часовой пояс
Посмотреть текущий часовой пояс можно разными способами.
Команда date
Команда date выводит текущую дату, время и часовой пояс:
$ date Вт мар 12 19:01:33 MSK 2019
В выводе команды мы можем видеть, что текущая временная зона соответствует Москве — MSK .
Команда timedatectl
Утилита timedatectl применяется для настройки и получения информации о текущем системном времени. Она доступна в системах, использующих systemd.
Если выполнить команду timedatectl без параметров, то будет выведена информация о системных часах, а также часовой пояс (в поле Time zone ).
$ timedatectl Local time: Вт 2019-03-12 20:18:08 MSK Universal time: Вт 2019-03-12 17:18:08 UTC RTC time: Вт 2019-03-12 17:18:09 Time zone: Europe/Moscow (MSK, +0300) System clock synchronized: yes NTP service: active RTC in local TZ: no
ls -lh /etc/localtime
Файл /etc/localtime это символическая ссылка, которая указывает на текущий часовой пояс, используемый в системе.
Для просмотра можно воспользоваться командной:
$ ls -lh /etc/localtime lrwxrwxrwx 1 root root 35 мар 12 20:09 /etc/localtime -> ../usr/share/zoneinfo/Europe/Moscow
Получить список доступных часовых поясов
Утилита tzselect
Перед тем, как устанавливать часовой пояс, нужно понять, какое значение можно установить. Для этого можно воспользоваться утилитой tzselect .
После запуска утилита tzselect отображает список географических областей. Вы должны ввести номер области и нажать Enter . Затем появится список стран. Аналогично, нужно ввести номер страны. Появится список городов. Вводим номер города. В результате вы сможете увидеть название вашей временной зоны.
tzselect Please identify a location so that time zone rules can be set correctly. Please select a continent, ocean, "coord", or "TZ". 1) Africa 2) Americas 3) Antarctica 4) Asia 5) Atlantic Ocean 6) Australia 7) Europe 8) Indian Ocean 9) Pacific Ocean 10) coord - I want to use geographical coordinates. 11) TZ - I want to specify the time zone using the Posix TZ format. #? 7
Утилита timedatectl
Утилита timedatectl поддерживает опцию list-timezones . Выполнив следующую команду можно просмотреть список всех доступных временных зон:
timedatectl list-timezones
Можно воспользоваться grep и ограничить область поиска. Например, выведем список временных зон только для Европы:
timedatectl list-timezones | grep Europe | less
Изменить часовой пояс
Изменяем часовой пояс утилитой timedatectl
Напомним, что утилита timedatectl доступна только для систем, использующих systemd. Если у вас нет утилиты timedatectl, то используйте способ описанный в следующем параграфе.
Для установки часового пояса с помощью утилиты timedatectl нужно выполнить команду:
timedatectl set-timezone Europe/Moscow
Во время ввода часового пояса можно нажимать дважды клавишу Tab , чтобы получить список часовых поясов.
Изменяем часовой пояс настройкой /etc/localtime
Данный способ наиболее универсальный и работает в большинстве дистрибутивов Linux.
Необходимо создать символическую ссылку /etc/localtime , чтобы она указывала на файл нужной временной зоны. Файлы временных зон хранятся в каталоге /usr/share/zoneinfo/ . Каждая зона имеет путь /usr/share/zoneinfo/Название/Зоны . Например, для Москвы это /usr/share/zoneinfo/Europe/Moscow .
Итак создадим ссылку на нужный файл временной зоны:
sudo unlink /etc/localtime sudo ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Чтобы проверить, что временная зона установлена верно, можно выполнить команду date :
Изменить часовой пояс только для одной программы или текущей сессии
Чтобы установить часовой пояс для отдельной программы можно задать его через переменную окружения TZ :
TZ=America/Chicago программа
Чтобы установить часовой пояс только для текущей сессии в терминале, используется команда:
Изменить часовой пояс через графические утилиты
Выше мы описали способ изменения часового пояса, используя средства и утилиты командной строки. В большинстве дистрибутивах обычно есть графическая программа настройки, через которую можно с легкостью изменить часовой пояс.
Если вы работаете в Gnome, откройте Параметры системы .
Перейдите на вкладку Сведения о системе , далее вкладка Дата и время (в зависимости от версии Gnome названия пунктов могут немного отличаться). Нажмите на надпись Часовой пояс .
Откроется карта с возможностью интерактивного выбора часового пояса. Выберите мышкой нужный регион на карте.
Заключение
Мы рассмотрели как изменить часовой пояс в Linux, как определить текущий часовой пояс и просмотреть список доступных временных зон. Большинству пользователей подойдет способ с использованием графической программы для изменения Параметров системы.