Проверка часового пояса linux

Как изменить часовой пояс Linux

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

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

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

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

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

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

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

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

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

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

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

cp /etc/localtime /etc/localtime.bak

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

Читайте также:  Linux опции ядра посмотреть

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 аналогично можно установить часовой пояс в настройках системы. Запустите утилиту настроек, откройте пункт Локализация, перейдите в раздел Дата и время, а затем откройте вкладку Часовой пояс:

timezone1

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

Выводы

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

Читайте также:  Web developer on linux

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

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Часовые пояса в Linux и timedatectl

Обычно системы на Linux могут получить дату и время при первом соединении с интернетом после установки операционной системы (через «NTP service»). Единственное что не знает система — это текущий часовой пояс, поэтому получается дата по Гринвичу. В итоге, остаётся только изменить часовой пояс, чтобы время и дата стали указываться правильно.

После установки операционной системы первым делом всегда настраивайте дату и часовой пояс. Иначе многие программы будут работать неверно, используя неверное время. Это относится не только к планировщику заданий CRON, но и к СУБД MySQL и Apache серверу. Если не поставите нужную дату сразу, от при изменении её после начала работы проекта могут произойти ошибки в работе программ.

Вт 03 авг 2021 18:44:58 MSK
 Local time: Вт 2021-08-03 18:46:08 MSK Universal time: Вт 2021-08-03 15:46:08 UTC RTC time: Вт 2021-08-03 15:46:08 Time zone: Europe/Moscow (MSK, +0300) System clock synchronized: yes NTP service: active RTC in local TZ: no 

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

timedatectl list-timezones
Africa/Abidjan Africa/Accra Africa/Addis_Ababa . Pacific/Tongatapu Pacific/Wake Pacific/Wallis

Список будет очень большим. Чтобы ограничить его можно использовать утилиту «grep», чтобы выделить строки только с нужным регионом. К примеру:

timedatectl list-timezones | grep Europe

После чего необходимо взять название подходящего города/страны (записаны через слеш) и выполнить вместе с ними команду (в примере мы выбрали «Europe/Moscow»):

timedatectl set-timezone Europe/Moscow

При выполнении этой команды часовой пояс сменится на «Europe/Moscow». Чтобы проверить его можно опять выполнить команду «timedatectl» без дополнительных ключей.

Источник

Как узнать, на какой часовой пояс настроен комп с линуксом?

Набираем в консоли это и получаем текущую временную зону:

find /usr/share/zoneinfo* -type f -exec md5sum <> + | grep `md5sum /etc/localtime | cut -d\ -f1` 

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

Читайте также:  Настройка zabbix server linux

А какой способ используете вы?

Singularity ★★★★★ ( 31.10.18 13:46:36 MSK )
Последнее исправление: Singularity 31.10.18 13:46:42 MSK (всего исправлений: 1)

Ну я беру открываю emacs, и там на плюсах пишу простую программу с буст файлсистем.

ЗЫ: сегодня не первое апреля

Там где это симлинк я обычно просто ls -l использую, но в некоторых дистрах не симлинк, а то ли копия, то ли хардлинк.

а я во время переписки вконтакте замечаю что время получения сообщений какое-то не такое и тогда уже делаю rdate ntp.time.gov

find /usr/share/zoneinfo* -type f -exec md5sum <> + | grep `md5sum /etc/localtime | cut -d\ -f1` | wc -l
2

Как узнать, в каком часовом поясе находится комп с линуксом?

на плюсах пишу простую программу с буст файлсистем

$ timedatectl Local time: Ср 2018-10-31 15:20:52 MSK Universal time: Ср 2018-10-31 12:20:52 UTC RTC time: Ср 2018-10-31 12:20:52 Time zone: Europe/Moscow (MSK, +0300) System clock synchronized: yes NTP service: active RTC in local TZ: no 
[ecko@work ~]$ find /usr/share/zoneinfo* -type f -exec md5sum <> + | grep `md5sum /etc/localtime | cut -d\ -f1` | wc -l 4 

Вы бы сразу сами файлы показали. Дублируются наверное.

[ecko@work ~]$ find /usr/share/zoneinfo* -type f -exec md5sum <> + | grep `md5sum /etc/localtime | cut -d\ -f1` af60846fe414e610419710e0848b724f /usr/share/zoneinfo/Europe/Moscow af60846fe414e610419710e0848b724f /usr/share/zoneinfo/posix/Europe/Moscow af60846fe414e610419710e0848b724f /usr/share/zoneinfo/posix/W-SU af60846fe414e610419710e0848b724f /usr/share/zoneinfo/W-SU 

В нормальных дистрах это всё симлинки, которые не должны находиться find -f .

Запускаем ntpd и собираем статистику убегания часов от него в течение нескольких дней-недель. Дело в том что хотя применяющиеся в современной технике кварцевые резонаторы отличаются высокой стабильностью частоты, температура на них всё равно влияет, из-за этого частота плавает и часы убегают быстрее когда тепло. А температура изменятся в течение дня. Соответственно, собрав достаточно статистики мы можем довольно точно вычислить широту на которой находится машина, а следовательно и часовой пояс.

А серьёзно, во-первых, нормальные люди делают localtime ссылкой на /usr/share/zoneinfo/. во-вторых, zdump /etc/localtime

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

И много народу держит комп на улице?

…вычислить широту на которой находится машина, а следовательно и часовой пояс

Часовой пояс это про долготу, а не широту

Не знаю как в этих ваших Линуксах, а во ФрееБЗД:

[16:06] u@netstation:~> date среда, 31 октября 2018 г. 16:06:23 (MSK) 

Источник

Оцените статью
Adblock
detector