Как посмотреть timezone в linux
Использование правильного часового пояса необходимо для многих системных задач и процессов. Например, демон cron использует часовой пояс системы для выполнения заданий cron. Часовой пояс также используется для отметок времени журналов.
В этом руководстве описаны действия, необходимые для установки или изменения часового пояса в Linux.
Проверка текущего часового пояса
Чтобы просмотреть текущий часовой пояс, вызовите команду timedatectl без каких-либо параметров или аргументов:
Приведенный выше вывод показывает, что часовой пояс системы установлен на UTC.
Системный часовой пояс настраивается путем символьной привязки файла /etc/localtime к идентификатору двоичного часового пояса в каталоге /usr/share/zoneinfo .
Изменение часового пояса в Linux
Перед изменением часового пояса вам нужно узнать длинное название часового пояса, который вы хотите использовать. В соглашении об именах часовых поясов обычно используется формат «Регион / Город».
Чтобы просмотреть все доступные часовые пояса, используйте команду timedatectl или перечислите файлы в каталоге /usr/share/zoneinfo :
Как только вы определите, какой часовой пояс соответствует вашему местоположению, выполните следующую команду от имени пользователя root или sudo :
Например, чтобы изменить часовой пояс системы на America/New_York , введите:
Чтобы проверить изменение, снова вызовите команду timedatectl :
Миссия выполнена! Вы успешно изменили часовой пояс вашей системы.
Изменение часового пояса путем создания символической ссылки
Если вы используете более старый дистрибутив Linux и утилита timedatectl отсутствует в вашей системе, вы можете изменить часовой пояс, установив символическую ссылку /etc/localtime на часовой пояс в каталоге /usr/share/zoneinfo .
Определите часовой пояс, который вы хотите настроить, и создайте символическую ссылку :
Проверьте это, перечислив файл /etc/localtime или вызвав команду date :
Выходные данные включают часовой пояс, в данном примере это «EST».
Выводы
Чтобы изменить часовой пояс в системах Linux, используйте команду sudo timedatectl set-timezone за которой следует длинное имя часового пояса, который вы хотите установить.
Мы очень часто пользуемся временем в Linux, начиная от простой задачи узнать сколько сейчас времени, до более сложной - посмотреть логи или узнать когда произошло то или иное событие в системе. Все завязано на времени, поэтому очень важно, чтобы часы шли правильно.
Наша планета разделена на часовые пояса, это было сделано с одной простой целью, чтобы время в любой точке планеты соответствовало солнечному времени. Время между этими зонами отличается на час и всего таких поясов - 24, за эталон взято время по нулевому, Гринвичскому меридиану.
Поэтому в определенный момент время в разных участках планеты будет отличаться на час. В этой небольшой статье мы рассмотрим как изменить часовой пояс Linux, чтобы операционная система правильно работала со временем и могла правильно его синхронизировать через интернет.
Как работает время в Linux?
Операционная система Linux хранит и обрабатывает системное время в специальном Unix формате - количество секунд прошедших с полуночи первого января 1970 года. Эта дата считается началом эпохи Unix. И используется не ваше локальное время, а время по гринвичскому меридиану.
Для преобразования времени по Гринвичу в региональное время используется часовой пояс. Это преобразование выполняется для каждого пользователя. Это необходимо, чтобы каждый пользователь мог настроить для себя правильное по его временной зоне время. Такое поведение просто необходимо на серверах, когда на одной машине могут работать люди из разных частей мира.
Настройка часового пояса в linux
1. Ссылка /etc/localtime
Наиболее популярный и поддерживаемый в большинстве дистрибутивов способ установки часового пояса для всех пользователей - с помощью символической ссылки /etc/localtime на файл нужного часового пояса. Список доступных часовых поясов можно посмотреть командой:
Сначала создайте резервную копию текущего часового пояса:
cp /etc/localtime /etc/localtime.bak
Для создания символической ссылки используйте команду ln -sf. Файл зоны нужно выбрать из доступных в системе. Например, мой часовой пояс - Украина, Киев, для установки будет использоваться следующая команда:
ln -sf /usr/share/zoneinfo/Europe/Kiev /etc/locatime
Теперь можете проверить текущее системное время с помощью утилиты date:
Если у вас установлена утилита rdate можно синхронизировать время с сетью:
sudo rdate -s time-a.nist.gov
Осталось только синхронизировать ваши аппаратные часы с новыми настройками, для этого выполните команду:
Если нужно изменить часовой пояс только для определенной программы или скрипта, просто измените для нее переменную окружения TZ, например:
Эта настройка сохраняется только для текущего сеанса командной оболочки. Чтобы сменить часовой пояс linux для определенного пользователя тоже нужно использовать переменную среды TZ. Только ее нужно добавить в файл
/.environment. Этот файл читается по умолчанию при входе в систему, а значит переменная будет доступна всем программам:
Готово, теперь вы знаете как выполняется настройка часового пояса linux для определенного пользователя.
2. Настройка с помощью tzdata
Если вы не хотите использовать описанный выше способ, можно воспользоваться специальными утилитами. Вот только в разных дистрибутивах используются свои утилиты. Рассмотрим варианты для самых популярных дистрибутивов.
В Red Hat Linux:
В CentOS и Fedora:
В Slackware или FreeBSD:
В большинстве случаев вы увидите подобное диалоговое окно:
Здесь просто нужно выбрать нужный часовой пояс и нажать кнопку Enter. После этого для окончательного применения настроек нужно будет перезагрузить систему.
3. Настройка с помощью systemd
В systemd есть своя утилита для настройки даты и часового пояса. Чтобы узнать текущее состояние выполните:
Для просмотра всех доступных временных зон выполните такую команду:
А для установки нужного часового пояса используйте команду set-timezone, например, тот же Europe/Kiev:
sudo timedatectl set-timezone Europe/Kiev
4. Настройка часового пояса в GUI
В дистрибутиве Ubuntu и других, использующих Gnome, настройка часового пояса Linux может быть выполнена прямо в параметрах системы. Для этого выберите пункт Сведения о системе, затем Дата и время, выберите свое местоположение на карте, или наберите название для поиска в поле ввода:
В KDE аналогично можно установить часовой пояс в настройках системы. Запустите утилиту настроек, откройте пункт Локализация, перейдите в раздел Дата и время, а затем откройте вкладку Часовой пояс:
Остается выбрать часовой пояс в списке и нажать кнопку Применить. Здесь уже изменения должны проявиться моментально.
Выводы
Теперь вы знаете как выполняется установка часового пояса в linux и сможете настроить не только свой домашний компьютер но и сервер с множеством пользователей, которым нужен отдельный часовой пояс для правильного местного времени. Если у вас остались вопросы, спрашивайте в комментариях!
На завершение видео, в котором подробно рассказано, что такое часовые пояса и зачем они нужны:
Часовой пояс в Linux обычно настраивается во время установки системы. Иногда пользователю может потребоваться его изменить. Способ изменения часового пояса (его еще называют временной зоной) может зависеть от конкретного дистрибутива. Рассмотрим некоторые из способов изменения часового пояса.
Посмотреть текущий часовой пояс
Посмотреть текущий часовой пояс можно разными способами.
Команда date
Команда date выводит текущую дату, время и часовой пояс:
В выводе команды мы можем видеть, что текущая временная зона соответствует Москве — MSK .
Команда timedatectl
Утилита timedatectl применяется для настройки и получения информации о текущем системном времени. Она доступна в системах, использующих systemd.
Если выполнить команду timedatectl без параметров, то будет выведена информация о системных часах, а также часовой пояс (в поле Time zone ).
ls -lh /etc/localtime
Файл /etc/localtime это символическая ссылка, которая указывает на текущий часовой пояс, используемый в системе.
Для просмотра можно воспользоваться командной:
Получить список доступных часовых поясов
Утилита tzselect
Перед тем, как устанавливать часовой пояс, нужно понять, какое значение можно установить. Для этого можно воспользоваться утилитой tzselect .
После запуска утилита tzselect отображает список географических областей. Вы должны ввести номер области и нажать Enter . Затем появится список стран. Аналогично, нужно ввести номер страны. Появится список городов. Вводим номер города. В результате вы сможете увидеть название вашей временной зоны.
Утилита timedatectl
Утилита timedatectl поддерживает опцию list-timezones . Выполнив следующую команду можно просмотреть список всех доступных временных зон:
Можно воспользоваться grep и ограничить область поиска. Например, выведем список временных зон только для Европы:
Изменить часовой пояс
Изменяем часовой пояс утилитой timedatectl
Напомним, что утилита timedatectl доступна только для систем, использующих systemd. Если у вас нет утилиты timedatectl, то используйте способ описанный в следующем параграфе.
Для установки часового пояса с помощью утилиты timedatectl нужно выполнить команду:
Во время ввода часового пояса можно нажимать дважды клавишу Tab , чтобы получить список часовых поясов.
Изменяем часовой пояс настройкой /etc/localtime
Данный способ наиболее универсальный и работает в большинстве дистрибутивов Linux.
Необходимо создать символическую ссылку /etc/localtime , чтобы она указывала на файл нужной временной зоны. Файлы временных зон хранятся в каталоге /usr/share/zoneinfo/ . Каждая зона имеет путь /usr/share/zoneinfo/Название/Зоны . Например, для Москвы это /usr/share/zoneinfo/Europe/Moscow .
Итак создадим ссылку на нужный файл временной зоны:
Чтобы проверить, что временная зона установлена верно, можно выполнить команду date :
Изменить часовой пояс только для одной программы или текущей сессии
Чтобы установить часовой пояс для отдельной программы можно задать его через переменную окружения TZ :
Чтобы установить часовой пояс только для текущей сессии в терминале, используется команда:
Изменить часовой пояс через графические утилиты
Выше мы описали способ изменения часового пояса, используя средства и утилиты командной строки. В большинстве дистрибутивах обычно есть графическая программа настройки, через которую можно с легкостью изменить часовой пояс.
Если вы работаете в Gnome, откройте Параметры системы .
Перейдите на вкладку Сведения о системе , далее вкладка Дата и время (в зависимости от версии Gnome названия пунктов могут немного отличаться). Нажмите на надпись Часовой пояс .
Откроется карта с возможностью интерактивного выбора часового пояса. Выберите мышкой нужный регион на карте.
Заключение
Мы рассмотрели как изменить часовой пояс в Linux, как определить текущий часовой пояс и просмотреть список доступных временных зон. Большинству пользователей подойдет способ с использованием графической программы для изменения Параметров системы.
Есть ли способ проверить, какой часовой пояс я сейчас в Linux?
Обычно переменная среды TZ сообщает вам что-то полезное. Однако лучше всего использовать такие функции, как mktime() и localtime() для преобразования между time_t и локальным представлением часового пояса. То есть не пытайтесь выполнить преобразование самостоятельно .
Если вы имеете в виду консоль, просто введите:
Если вам нужен часовой пояс:
date +'%:z %Z'
Я хотел найти часовой пояс в форме «США /Восток» или «Европа /Лондон». Вы можете найти это в:
- /etc /timezone (присутствует в Ubuntu и Red Hat ?, но не, например, Amazon Linux)
- (в системах стиля Red Hat) как ZONE="US/Eastern" в /etc /sysconfig /clock
, или вы можете попробовать и сопоставить /etc /localtime с одним из файлов в /usr /share /zoneinfo; раздражающе это не похоже на символическую ссылку, но вы можете, например,
cd /usr /share /zoneinfo
find * -type f -exec sh -c "diff -q /etc /localtime '<>'> /dev /null & echo <>" \;
, чтобы найти совпадающие файлы - есть, вероятно, лучшие способы сделать это, но это работает. Будет несколько совпадений.
Для ubuntu попробуйте следующее:
Итак, я нахожусь в Mountain Time. Хотя советы выше о том, как использовать переменную среды или только дату, иногда работают лучше, в зависимости от того, как вы хотите это использовать.
Иногда вы можете искать канонический часовой пояс, а не короткую форму, создаваемую date %Z , например. US/Eastern . В системах с timedatectl , например. Fedora, timedatectl выводит много полезной информации, включая текущую зону:
К сожалению, timedatectl принимает set-timezone как команду, но не имеет соответствующего get-timezone . Разберите его следующим образом:
- /etc /sysconfig /clock устанавливает, будут ли аппаратные часы сохранены как UTC или локальное время.
- Symlink /etc /localtime в /usr /share /zoneinfo /. для установки часового пояса.
- Введите /sbin/hwclock --systohc [--utc] , чтобы установить аппаратные часы.
Ядро Linux всегда хранит и вычисляет время как количество секунд с полуночи 1 января 1970 года UTC, независимо от того, хранятся ли ваши аппаратные часы в формате UTC или нет. Конверсии по местному времени выполняются во время выполнения. Одна из опций заключается в том, что если кто-то использует ваш компьютер из другого часового пояса, он может установить переменную окружения TZ, и все даты и время будут отображаться правильно для их часового пояса.
Если количество секунд с 1 января 1970 года UTC хранится в виде 32-битного целого числа (как в вашей системе Linux /Intel), ваши часы перестанут работать в 2038 году. Linux не имеет присущей проблеме Y2K, но у нее есть проблема 2038 года. Надеюсь, к этому времени мы все будем запускать Linux на 64-битных системах. 64-битные целые числа будут поддерживать наши часы достаточно хорошо, примерно до 292271 миллионов долларов.
Использование TZ или date НЕ НАДЕЖНО, поскольку оно указывает часовой пояс USER, а не часовой пояс по умолчанию.
Системный часовой пояс по умолчанию сохраняется в /etc /timezone (который часто является символической ссылкой на файл данных часового пояса, специфичный для часового пояса). Если у вас нет /etc /timezone, посмотрите /etc /localtime. Как правило, это «часовой пояс» сервера. /etc /localtime часто является символической ссылкой на файл часового пояса в /usr /share /zoneinfo. Этот путь к правильному файлу часовых поясов часто дает вам информацию о географии.
В новом linux есть «timedatectl», который дает вам тонны информации при выполнении команды.
(в качестве бокового узла, если у вас есть древняя система, которая по-прежнему использует OLD жестко закодированные тайм-зоны, вы, вероятно, можете скопировать на нее современный файл часового пояса, и он будет работать. Мне приходилось делать это много раз, чтобы разрешить изменение часовых поясов на устаревшем оборудовании).
Читайте также: