Мы очень часто пользуемся временем в Linux, начиная от простой задачи узнать сколько сейчас времени, до более сложной — посмотреть логи или узнать когда произошло то или иное событие в системе. Все завязано на времени, поэтому очень важно, чтобы часы шли правильно.
Наша планета разделена на часовые пояса, это было сделано с одной простой целью, чтобы время в любой точке планеты соответствовало солнечному времени. Время между этими зонами отличается на час и всего таких поясов — 24, за эталон взято время по нулевому, Гринвичскому меридиану.
Поэтому в определенный момент время в разных участках планеты будет отличаться на час. В этой небольшой статье мы рассмотрим как изменить часовой пояс Linux, чтобы операционная система правильно работала со временем и могла правильно его синхронизировать через интернет.
Операционная система Linux хранит и обрабатывает системное время в специальном Unix формате — количество секунд прошедших с полуночи первого января 1970 года. Эта дата считается началом эпохи Unix. И используется не ваше локальное время, а время по гринвичскому меридиану.
Для преобразования времени по Гринвичу в региональное время используется часовой пояс. Это преобразование выполняется для каждого пользователя. Это необходимо, чтобы каждый пользователь мог настроить для себя правильное по его временной зоне время. Такое поведение просто необходимо на серверах, когда на одной машине могут работать люди из разных частей мира.
По умолчанию в системе может быть установлен неправильный часовой пояс, это приведет к путанице в логах событий, да и другим трудностям. Но все это легко исправить. Дальше мы рассмотрим несколько способов изменить часовой пояс Linux.
Настройка часового пояса в linux
1. Ссылка /etc/localtime
Наиболее популярный и поддерживаемый в большинстве дистрибутивов способ установки часового пояса для всех пользователей — с помощью символической ссылки /etc/localtime на файл нужного часового пояса. Список доступных часовых поясов можно посмотреть командой:
ls /usr/share/zoneinfo/
Сначала создайте резервную копию текущего часового пояса:
cp /etc/localtime /etc/localtime.bak
Для создания символической ссылки используйте команду ln -sf. Файл зоны нужно выбрать из доступных в системе. Например, мой часовой пояс — Украина, Киев, для установки будет использоваться следующая команда:
ln -sf /usr/share/zoneinfo/Europe/Kiev /etc/locatime
Теперь можете проверить текущее системное время с помощью утилиты date:
date
Если у вас установлена утилита rdate можно синхронизировать время с сетью:
sudo rdate -s time-a.nist.gov
Осталось только синхронизировать ваши аппаратные часы с новыми настройками, для этого выполните команду:
/sbin/hwclock --systohc
Если нужно изменить часовой пояс только для определенной программы или скрипта, просто измените для нее переменную окружения TZ, например:
export TZ=Europe/Kiev
Эта настройка сохраняется только для текущего сеанса командной оболочки. Чтобы сменить часовой пояс linux для определенного пользователя тоже нужно использовать переменную среды TZ. Только ее нужно добавить в файл ~/.environment. Этот файл читается по умолчанию при входе в систему, а значит переменная будет доступна всем программам:
vi ~/.environment
export TZ=Europe/Kiev
Готово, теперь вы знаете как выполняется настройка часового пояса linux для определенного пользователя.
2. Настройка с помощью tzdata
Если вы не хотите использовать описанный выше способ, можно воспользоваться специальными утилитами. Вот только в разных дистрибутивах используются свои утилиты. Рассмотрим варианты для самых популярных дистрибутивов.
В Red Hat Linux:
redhat-config-date
В CentOS и Fedora:
system-config-date
В Slackware или FreeBSD:
tzselect
В Ubuntu:
dpkg-reconfigure tzdata
В большинстве случаев вы увидите подобное диалоговое окно:
Здесь просто нужно выбрать нужный часовой пояс и нажать кнопку Enter. После этого для окончательного применения настроек нужно будет перезагрузить систему.
3. Настройка с помощью systemd
В systemd есть своя утилита для настройки даты и часового пояса. Чтобы узнать текущее состояние выполните:
timedatectl status
Для просмотра всех доступных временных зон выполните такую команду:
timedatectl list-timezones
А для установки нужного часового пояса используйте команду set-timezone, например, тот же Europe/Kiev:
sudo timedatectl set-timezone Europe/Kiev
4. Настройка часового пояса в GUI
В дистрибутиве Ubuntu и других, использующих Gnome, настройка часового пояса Linux может быть выполнена прямо в параметрах системы. Для этого выберите пункт Сведения о системе, затем Дата и время, выберите свое местоположение на карте, или наберите название для поиска в поле ввода:
В KDE аналогично можно установить часовой пояс в настройках системы. Запустите утилиту настроек, откройте пункт Локализация, перейдите в раздел Дата и время, а затем откройте вкладку Часовой пояс:
Остается выбрать часовой пояс в списке и нажать кнопку Применить. Здесь уже изменения должны проявиться моментально.
Выводы
Теперь вы знаете как выполняется установка часового пояса в linux и сможете настроить не только свой домашний компьютер но и сервер с множеством пользователей, которым нужен отдельный часовой пояс для правильного местного времени. Если у вас остались вопросы, спрашивайте в комментариях!
На завершение видео, в котором подробно рассказано, что такое часовые пояса и зачем они нужны:
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .
Часовой пояс в Linux обычно настраивается во время установки системы. Иногда пользователю может потребоваться его изменить. Способ изменения часового пояса (его еще называют временной зоной) может зависеть от конкретного дистрибутива. Рассмотрим некоторые из способов изменения часового пояса.
Оглавление
- Посмотреть текущий часовой пояс
- Команда date
- Команда timedatectl
- ls -lh /etc/localtime
- Получить список доступных часовых поясов
- Утилита tzselect
- Утилита timedatectl
- Изменить часовой пояс
- Изменяем часовой пояс утилитой timedatectl
- Изменяем часовой пояс настройкой /etc/localtime
- Изменить часовой пояс только для одной программы или текущей сессии
- Изменить часовой пояс через графические утилиты
- Заключение
Посмотреть текущий часовой пояс
Посмотреть текущий часовой пояс можно разными способами.
Команда 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:
date
Изменить часовой пояс только для одной программы или текущей сессии
Чтобы установить часовой пояс для отдельной программы можно задать его через переменную окружения TZ:
TZ=America/Chicago программа
Например:
$ TZ=America/Chicago date
Чтобы установить часовой пояс только для текущей сессии в терминале, используется команда:
export TZ=America/Denver
Изменить часовой пояс через графические утилиты
Выше мы описали способ изменения часового пояса, используя средства и утилиты командной строки. В большинстве дистрибутивах обычно есть графическая программа настройки, через которую можно с легкостью изменить часовой пояс.
Если вы работаете в Gnome, откройте Параметры системы.
Перейдите на вкладку Сведения о системе, далее вкладка Дата и время (в зависимости от версии Gnome названия пунктов могут немного отличаться). Нажмите на надпись Часовой пояс.
Откроется карта с возможностью интерактивного выбора часового пояса. Выберите мышкой нужный регион на карте.
Заключение
Мы рассмотрели как изменить часовой пояс в Linux, как определить текущий часовой пояс и просмотреть список доступных временных зон. Большинству пользователей подойдет способ с использованием графической программы для изменения Параметров системы.
Download Article
A quick and easy guide to changing time zones in any Linux distribution
Download Article
This wikiHow teaches you how to change the time zone on a Linux computer. You can change the timezone on every Linux distribution by using the command line, or you can use the selection menu in the command line for different Linux distributions. If you’re using Mint, Ubuntu, or any other distribution with a simple user interface and settings menu, you can also change the time zone settings from there.
-
1
Open Terminal. Select the Terminal program from your Linux programs, or press Ctrl+Alt+T on your keyboard.
-
2
Check your current time zone. Type date into Terminal and press ↵ Enter. The terminal will display the date in
Weekday Month Day Time TimeZone Year
format.- For example, you might see something like
Wed Mar 7 07:38:23 EDT 2017
wherein «EDT» refers to the current time zone (Eastern Daylight Time).
Advertisement
- For example, you might see something like
-
3
Check available time zones. Type in cd /usr/share/zoneinfo and press ↵ Enter, then type in tzselect and press ↵ Enter to display a list of locations.
- The /usr/share/zoneinfo directory may vary depending on your Linux distribution.
-
4
Select a continent or ocean. Type in a selection number that pertains to your general location, then press ↵ Enter.
-
5
Select a country. Type in a selection number from the on-screen list and press ↵ Enter.
-
6
Select a time zone. Type in a selection number to select the preferred time zone region and press ↵ Enter.
- If your city is not listed in the time zone list, pick a different city from your same time zone.
-
7
Confirm the local time. In the following prompt, confirm that the local time is correct by typing 1 and then pressing ↵ Enter.
- If the time isn’t correct, type in 2 and press ↵ Enter, then select a new continent and repeat the process.
-
8
Verify that your time zone has been set. Run the date command again and check that the time zone corresponds to the one you just changed to. If you see you new time zone listed, you have successfully changed your computer’s time zone.
-
9
Set your clock to stay synced with internet time servers if you like. Most modern distributions have NTP already installed. If your Linux distribution does not, you will need to install the NTP server package. Use the following commands to install it, depending on your Linux distribution:
- Ubuntu/Mint/Debian: sudo apt install ntpdate
-
CentOS: sudo yum install ntpdate
sudo /sbin/chkconfig ntpd on -
Fedora/RedHat: sudo yum install ntpdate
sudo chkconfig ntpd on - Enter ntpdate server link && hwclock –w after the installation command, making sure to enter the link to the website in place of server link.
Advertisement
-
1
Open Terminal. Select the Terminal program from your Linux programs, or press Ctrl+Alt+T on your keyboard.
-
2
Enter the time zone menu command. Depending on your Linux distribution, this command will vary:
- Ubuntu and Mint — sudo dpkg-reconfigure tzdata followed by the admin/user password.
- Redhat — redhat-config-date
- CentOS and Fedora — system-config-date
- ‘FreeBSD and Slackware — tzselect
-
3
Select your geographic area. Use the arrow keys to select the geographic area the country is found in, then press ↵ Enter.
-
4
Select your city/region. Select the city or region corresponding to your time zone, then press ↵ Enter. This will change the time zone on your system.[1]
Advertisement
-
1
Click the «System Menu» icon. It’s a combined group of Power, Volume and Networking icons in the upper-right corner of the screen. A drop-down menu will appear.[2]
-
2
Click the «Settings» icon. This gear-shaped icon is in the upper-left corner of the drop-down menu. Doing so opens the Ubuntu Settings.
-
3
Click Date & Time. You’ll find this tab on the left side of the window.
-
4
Turn off Automatic Time Zone. Click the blue «Automatic Time Zone» switch in the middle of the page to do so.
- If the «Automatic Time Zone» switch is grey, skip this step.
-
5
Click Time Zone. It’s near the bottom of the window. Doing so opens the Time Zone menu.
-
6
Select a time zone. Click your approximate location on the world map to do so. You should see the time change to match the selected area’s time zone.
-
7
Close the window. This will save your settings and update your time zone accordingly.
Advertisement
-
1
Open the Menu. Click Menu in the bottom-left corner of the screen.
-
2
Click the System Settings icon. It’s made of two grey cogs. You’ll find it on the left side of the Menu window.
-
3
Click Date & Time. It’s in the «Preferences» group of options.
-
4
Select a time zone. Click a vertical slice of the map to pick that time zone. You should see the clock on the right side of the page immediately change to reflect the selected time zone’s time.
-
5
Enter your user password when prompted. If you have logged in as an Administrator, you may not need to enter password. In case you have logged in as a Standard user, type in the Administrator password. Super user privileges are required to make any changes to time zone settings.
-
6
Click Authenticate. It’s at the bottom of the prompt. Doing so unlocks the Date & Time menu.
Advertisement
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
Video
-
On some versions of RedHat Linux, Slackware, Gentoo, SuSE, Debian, Ubuntu, and anything else that is «normal», the command to display and change the time is «date», not «clock».
-
On mobile phones and other small devices that run Linux, the time zone is stored differently. It is written in /etc/TZ. Edit this file manually or use echo (for instance, echo GMT0BST > /etc/TZ to set the the timezone of the United Kingdom).
Thanks for submitting a tip for review!
Advertisement
-
Some applications (such as PHP) have separate timezone settings from the system timezone.
-
On some systems, there is a system utility provided that will prompt for the correct timezone and make the proper changes to the system configuration. For example, Debian provides the «tzsetup» or «tzconfig» utility.
Advertisement
About This Article
Thanks to all authors for creating a page that has been read 1,623,581 times.
Is this article up to date?
Download Article
A quick and easy guide to changing time zones in any Linux distribution
Download Article
This wikiHow teaches you how to change the time zone on a Linux computer. You can change the timezone on every Linux distribution by using the command line, or you can use the selection menu in the command line for different Linux distributions. If you’re using Mint, Ubuntu, or any other distribution with a simple user interface and settings menu, you can also change the time zone settings from there.
-
1
Open Terminal. Select the Terminal program from your Linux programs, or press Ctrl+Alt+T on your keyboard.
-
2
Check your current time zone. Type date into Terminal and press ↵ Enter. The terminal will display the date in
Weekday Month Day Time TimeZone Year
format.- For example, you might see something like
Wed Mar 7 07:38:23 EDT 2017
wherein «EDT» refers to the current time zone (Eastern Daylight Time).
Advertisement
- For example, you might see something like
-
3
Check available time zones. Type in cd /usr/share/zoneinfo and press ↵ Enter, then type in tzselect and press ↵ Enter to display a list of locations.
- The /usr/share/zoneinfo directory may vary depending on your Linux distribution.
-
4
Select a continent or ocean. Type in a selection number that pertains to your general location, then press ↵ Enter.
-
5
Select a country. Type in a selection number from the on-screen list and press ↵ Enter.
-
6
Select a time zone. Type in a selection number to select the preferred time zone region and press ↵ Enter.
- If your city is not listed in the time zone list, pick a different city from your same time zone.
-
7
Confirm the local time. In the following prompt, confirm that the local time is correct by typing 1 and then pressing ↵ Enter.
- If the time isn’t correct, type in 2 and press ↵ Enter, then select a new continent and repeat the process.
-
8
Verify that your time zone has been set. Run the date command again and check that the time zone corresponds to the one you just changed to. If you see you new time zone listed, you have successfully changed your computer’s time zone.
-
9
Set your clock to stay synced with internet time servers if you like. Most modern distributions have NTP already installed. If your Linux distribution does not, you will need to install the NTP server package. Use the following commands to install it, depending on your Linux distribution:
- Ubuntu/Mint/Debian: sudo apt install ntpdate
-
CentOS: sudo yum install ntpdate
sudo /sbin/chkconfig ntpd on -
Fedora/RedHat: sudo yum install ntpdate
sudo chkconfig ntpd on - Enter ntpdate server link && hwclock –w after the installation command, making sure to enter the link to the website in place of server link.
Advertisement
-
1
Open Terminal. Select the Terminal program from your Linux programs, or press Ctrl+Alt+T on your keyboard.
-
2
Enter the time zone menu command. Depending on your Linux distribution, this command will vary:
- Ubuntu and Mint — sudo dpkg-reconfigure tzdata followed by the admin/user password.
- Redhat — redhat-config-date
- CentOS and Fedora — system-config-date
- ‘FreeBSD and Slackware — tzselect
-
3
Select your geographic area. Use the arrow keys to select the geographic area the country is found in, then press ↵ Enter.
-
4
Select your city/region. Select the city or region corresponding to your time zone, then press ↵ Enter. This will change the time zone on your system.[1]
Advertisement
-
1
Click the «System Menu» icon. It’s a combined group of Power, Volume and Networking icons in the upper-right corner of the screen. A drop-down menu will appear.[2]
-
2
Click the «Settings» icon. This gear-shaped icon is in the upper-left corner of the drop-down menu. Doing so opens the Ubuntu Settings.
-
3
Click Date & Time. You’ll find this tab on the left side of the window.
-
4
Turn off Automatic Time Zone. Click the blue «Automatic Time Zone» switch in the middle of the page to do so.
- If the «Automatic Time Zone» switch is grey, skip this step.
-
5
Click Time Zone. It’s near the bottom of the window. Doing so opens the Time Zone menu.
-
6
Select a time zone. Click your approximate location on the world map to do so. You should see the time change to match the selected area’s time zone.
-
7
Close the window. This will save your settings and update your time zone accordingly.
Advertisement
-
1
Open the Menu. Click Menu in the bottom-left corner of the screen.
-
2
Click the System Settings icon. It’s made of two grey cogs. You’ll find it on the left side of the Menu window.
-
3
Click Date & Time. It’s in the «Preferences» group of options.
-
4
Select a time zone. Click a vertical slice of the map to pick that time zone. You should see the clock on the right side of the page immediately change to reflect the selected time zone’s time.
-
5
Enter your user password when prompted. If you have logged in as an Administrator, you may not need to enter password. In case you have logged in as a Standard user, type in the Administrator password. Super user privileges are required to make any changes to time zone settings.
-
6
Click Authenticate. It’s at the bottom of the prompt. Doing so unlocks the Date & Time menu.
Advertisement
Ask a Question
200 characters left
Include your email address to get a message when this question is answered.
Submit
Advertisement
Video
-
On some versions of RedHat Linux, Slackware, Gentoo, SuSE, Debian, Ubuntu, and anything else that is «normal», the command to display and change the time is «date», not «clock».
-
On mobile phones and other small devices that run Linux, the time zone is stored differently. It is written in /etc/TZ. Edit this file manually or use echo (for instance, echo GMT0BST > /etc/TZ to set the the timezone of the United Kingdom).
Thanks for submitting a tip for review!
Advertisement
-
Some applications (such as PHP) have separate timezone settings from the system timezone.
-
On some systems, there is a system utility provided that will prompt for the correct timezone and make the proper changes to the system configuration. For example, Debian provides the «tzsetup» or «tzconfig» utility.
Advertisement
About This Article
Thanks to all authors for creating a page that has been read 1,623,581 times.
Is this article up to date?
Загрузить PDF
Загрузить PDF
Из этой статьи вы узнаете, как изменить часовой пояс на компьютере Linux. Часовой пояс можно изменить на любом дистрибутиве Linux с помощью командной строки или меню выбора разных дистрибутивов Linux в командной строке. Если вы используете Mint, Ubuntu или другой дистрибутив с простым пользовательским интерфейсом и меню настроек, измените часовой пояс оттуда.
-
1
Запустите «Терминал». Выберите программу «Терминал» из списка программ Linux или нажмите Ctrl+Alt+T на клавиатуре.
-
2
Определите текущий часовой пояс. Введите date в «Терминал» и нажмите ↵ Enter. «Терминал» отобразит дату в формате:
День_недели Месяц Число Время Часовой_пояс Год
.- Пример:
Wed (среда) Mar (март) 7 07:38:23 FET 2017
, где «FET» обозначает текущий часовой пояс (Дальневосточноевропейское время).
- Пример:
-
3
Отобразите доступные часовые пояса. Введите cd /usr/share/zoneinfo и нажмите ↵ Enter, после чего введите tzselect и нажмите ↵ Enter, чтобы отобразить список мест.
- Путь /usr/share/zoneinfo может быть другим в зависимости от дистрибутива Linux.
-
4
Выберите континент или океан. Введите номер места в соответствии со своим местоположением и нажмите ↵ Enter.
-
5
Выберите страну. Введите на экране номер страны из списка и нажмите ↵ Enter.
-
6
Выберите часовой пояс. Введите номер предпочитаемого часового пояса и нажмите ↵ Enter.
- Если вашего города нет в списке, выберите другой город из того же часового пояса.
-
7
Подтвердите местное время. Подтвердите правильность местного времени, введя 1, а затем нажмите ↵ Enter.
- Если время указано неверно, введите 2 и нажмите ↵ Enter, а затем выберите другой континент и повторите весь процесс снова.
-
8
Убедитесь, что вы поменяли часовой пояс. Еще раз введите команду date и убедитесь, что на экране показан правильный часовой пояс. Если это так, то вы успешно изменили часовой пояс.
-
9
Настройте часы, чтобы они синхронизировались с сервером точного времени в интернете. Большинство современных дистрибутивов Linux содержат предварительно установленный пакет NTP. Если в вашем дистрибутиве его нет, установите пакет NTP отдельно. Используйте одну из следующих команд, чтобы установить NTP:
- Ubuntu/Mint/Debian: sudo apt install ntp
-
CentOS: sudo yum install ntp
sudo /sbin/chkconfig ntpd on -
Fedora/RedHat: sudo yum install ntp
sudo chkconfig ntpd on - Введите ntpdate ссылка на сервер && hwclock –w после команды установки, указав ссылку на сайт сервера.
Реклама
-
1
Запустите «Терминал». Выберите программу «Терминал» из списка программ Linux или нажмите Ctrl+Alt+T на клавиатуре.
-
2
Введите команду, чтобы открыть меню «Часовой пояс». Эта команда может отличаться в зависимости от дистрибутива Linux:
- Ubuntu и Mint — sudo dpkg-reconfigure tzdata с указанием пароля администратора/пользователя.
- Redhat — redhat-config-date
- CentOS и Fedora — system-config-date
- ‘FreeBSD и Slackware — tzselect
-
3
Выберите регион. Стрелками на клавиатуре выберите регион, в котором проживаете, и нажмите ↵ Enter.
-
4
Выберите свой город/страну. Выберите город или страну в соответствующем часовом поясе и нажмите ↵ Enter, чтобы изменить часовой пояс на компьютере.
[1]
Реклама
-
1
Щелкните по иконке «Системное меню»
, чтобы отобразить выпадающее меню. Это треугольник, направленный вниз, в правом верхнем углу экрана.[2]
-
2
Щелкните по иконке «Настройки» (гаечный ключ и отвертка) в левом нижнем углу меню. Откроется Центр управления Ubuntu.
-
3
Прокрутите вниз и нажмите на Подробности. Это раздел в нижней части боковой панели, расположенной в левой части окна.
- Убедитесь, чтобы мышь при этом находилась над левой боковой панелью.
-
4
Откройте вкладку Дата и время в левой части окна.
-
5
Отключите автоматическое определение часового пояса. Для этого нажмите на синий переключатель «Автоматически определять часовой пояс».
- Если этот параметр уже отключен, пропустите этот шаг.
-
6
Нажмите на Часовой пояс в нижней части окна, чтобы открыть меню выбора часового пояса.
-
7
Выберите часовой пояс. Выберите свое приблизительное местоположение на карте мира. Время на компьютере должно измениться в соответствии с часовым поясом в выбранном регионе.
-
8
Закройте окно, чтобы сохранить изменения и обновить часовой пояс на компьютере.
Реклама
-
1
Откройте Меню. Нажмите на «Меню» в левом нижнем углу экрана.
-
2
Нажмите на иконку «Параметры системы» (две серых шестеренки) в левой части окна Меню.
-
3
Выберите раздел Дата и время в группе «Параметры».
-
4
Нажмите на кнопку Разблокировать в правой части окна.
-
5
Введите пароль пользователя. Введите пароль для входа в систему.
-
6
Нажмите на Подтвердить в нижней части запроса, чтобы разблокировать меню «Дата и время».
-
7
Выберите часовой пояс. Щелкните по вертикальному срезу карты для выбора часового пояса. Время в правой части страницы сразу же изменится в соответствии с выбранным часовым поясом.
-
8
Нажмите на Заблокировать в правой части окна, чтобы сохранить часовой пояс и заблокировать меню «Дата и время».
Реклама
Советы
- В некоторых версиях RedHat Linux, Slackware, Gentoo, SuSE, Debian, Ubuntu и других стандартных дистрибутивах командой для отображения и изменения времени является «date», а не «clock».
- На мобильных телефонах и других портативных устройствах, работающих под управлением Linux, часовой пояс хранится в другом месте. Он содержится в файле /etc/TZ в формате, который описан, например, в [1]. Отредактируйте этот файл вручную или воспользуйтесь командой echo (например, echo GMT3FET > /etc/TZ, чтобы установить часовой пояс Москвы).
Реклама
Предупреждения
- Настройки часового пояса в некоторых приложениях (например, PHP) отличаются от системных настроек часового пояса.
- В некоторых системах есть утилита, которая запрашивает правильный часовой пояс и вносит соответствующие изменения в конфигурацию системы. В Debian, к примеру, для этого есть утилиты tzsetup и tzconfig.
Реклама
Об этой статье
Эту страницу просматривали 62 283 раза.
Была ли эта статья полезной?
Часовой пояс — это географический регион с одинаковым стандартным временем. Обычно часовой пояс устанавливается во время установки операционной системы, но его можно легко изменить позже.
Использование правильного часового пояса необходимо для многих задач и процессов, связанных с системами. Например, демон cron использует часовой пояс системы для выполнения заданий cron. Часовой пояс также используется для временных меток журналов.
Проверка текущего часового пояса
timedatectl
утилита командной строки, которая позволяет вам просматривать и изменять системное время и дату. Он доступен во всех современных системах Linux на основе systemd.
Чтобы просмотреть текущий часовой пояс, вызовите timedatectl
команду без каких-либо параметров или аргументов:
timedatectl
Local time: Tue 2019-12-03 16:30:44 UTC
Universal time: Tue 2019-12-03 16:30:44 UTC
RTC time: Tue 2019-12-03 16:30:44
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: no
systemd-timesyncd.service active: yes
RTC in local TZ: no
Вывод выше показывает, что часовой пояс системы установлен в UTC.
Часовой пояс системы настраивается путем символической ссылки /etc/localtime
файла на двоичный идентификатор часового пояса в /usr/share/zoneinfo
каталоге.
Другой способ проверить часовой пояс — просмотреть путь, на который указывает символическая ссылка, с помощью ls
команды:
ls -l /etc/localtime
lrwxrwxrwx 1 root root 27 Dec 3 16:29 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC
Изменение часового пояса в Linux
Перед сменой часового пояса вам необходимо узнать полное название часового пояса, которое вы хотите использовать. Соглашение о присвоении имен часовым поясам обычно использует формат «Регион / Город».
Чтобы просмотреть все доступные часовые пояса, используйте timedatectl
команду или перечислите файлы в /usr/share/zoneinfo
каталоге:
timedatectl list-timezones
...
America/Montserrat
America/Nassau
America/New_York
America/Nipigon
America/Nome
America/Noronha
...
Как только вы определите, какой часовой пояс соответствует вашему местоположению, выполните следующую команду от имени пользователя root или sudo :
sudo timedatectl set-timezone <your_time_zone>
Например, чтобы изменить часовой пояс системы, America/New_York
введите:
sudo timedatectl set-timezone America/New_York
Чтобы проверить изменение, timedatectl
снова вызовите команду:
timedatectl
Local time: Tue 2019-12-03 13:55:09 EST
Universal time: Tue 2019-12-03 18:55:09 UTC
RTC time: Tue 2019-12-03 18:02:16
Time zone: America/New_York (EST, -0500)
System clock synchronized: no
systemd-timesyncd.service active: yes
RTC in local TZ: no
Миссия выполнена! Вы успешно изменили часовой пояс вашей системы.
Изменение часового пояса путем создания символической ссылки
Если вы используете более старый дистрибутив Linux, а timedatectl
утилита отсутствует в вашей системе, вы можете изменить часовой пояс, вставив ссылку /etc/localtime
на часовой пояс в /usr/share/zoneinfo
каталоге.
Удалить текущую символическую ссылку или файл:
sudo rm -rf /etc/localtime
Определите часовой пояс, который вы хотите настроить, и создайте символическую ссылку :
sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
Проверьте это, перечислив /etc/localtime
файл или вызвав date
команду:
date
Выходные данные включают часовой пояс, в этом примере это «EST».
Tue Dec 3 14:10:54 EST 2019
Вывод
Чтобы изменить часовой пояс в системах Linux, используйте sudo timedatectl set-timezone
команду, за которой следует длинное имя часового пояса, которое вы хотите установить.
В статье мы разберёмся с тем, как настроить время в Linux. Посмотрим текущее время, укажем часовой пояс и настроим синхронизацию времени.
Чтобы посмотреть текущее время на вашем сервере linux воспользуйтесь командой date:
alex@ubu:~$ date Ср 13 июл 2022 13:40:27 UTC
В выводе мы видим не только дату и время, но также и часовой пояс. Сейчас вместо часового пояса используется UTC.
Также можно использовать другую команду – timedatectl:
alex@s-ubu:~$ timedatectl Local time: Ср 2022-07-20 07:56:41 UTC Universal time: Ср 2022-07-20 07:56:41 UTC RTC time: Ср 2022-07-20 07:56:41 Time zone: UTC (UTC, +0000) System clock synchronized: yes NTP service: active RTC in local TZ: no
Без опций она покажет текущее время, часовой пояс, а также другую информацию связанную с синхронизацией времени. Например в примере выше видно что время успешно синхронизуется (System clock synchronized: yes) и синхронизация настроена (NTP service: active).
С помощью этой же утилиты (timedatectl) мы будем настраивать часовой пояс и следить за синхронизацией времени, об этом чуть ниже.
Настройка часового пояса
Вообще часовой пояс в системе определяется файлом /etc/localtime, который является символьной ссылкой (про ссылки я уже писал):
alex@ubu:~$ ls -l /etc/localtime lrwxrwxrwx 1 root root 27 апр 21 01:01 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC
Можно вручную отредактировать эту ссылку и указать нужный часовой пояс:
alex@ubu:~$ sudo ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Или воспользоваться утилитой timedatectl:
alex@ubu:~$ sudo timedatectl set-timezone Europe/Moscow
Если вас не устраивает выбранный мною часовой пояс, то можете посмотреть список поддерживаемых часовых поясов так:
alex@ubu:~$ timedatectl list-timezones
Проверим время и часовой пояс:
alex@ubu:~$ timedatectl Local time: Ср 2022-07-13 16:50:39 MSK Universal time: Ср 2022-07-13 13:50:39 UTC RTC time: Ср 2022-07-13 13:50:39 Time zone: Europe/Moscow (MSK, +0300) System clock synchronized: yes NTP service: active RTC in local TZ: no
Как видим, часовой пояс уже изменился на Europe/Moscow (MSK, +0300).
Синхронизация времени
В настоящее время очень важно чтобы часы на ваших серверах были синхронизированы. Очень много систем полагаются на время, например:
- если часы на сервере kerberos и клиенте расходятся более чем на 5 минут, то клиенты не смогут пройти проверку подлинности на сервере;
- в различных финансовых системах транзакции должны выполняться в надлежащем порядке, поэтому серверы выполняющую эту работу должны быть строго синхронизированы по времени;
- правильное время также нужно для выполнения автоматизированный задач;
- системные журналы также полагаются на время.
Получение списка NTP серверов по DHCP
Если ваш сервер получает сетевые настройки по dhcp, то он может получить список NTP серверов (серверов времени для синхронизации). Это настраивается в файле /etc/dhcp/dhclient.conf. В строке request мы определяем что хотим получать от сервера dhcp. И здесь может быть указан параметр ntp-servers:
alex@ubu:~$ cat /etc/dhcp/dhclient.conf # часть текста пропустил request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes, ntp-servers; # часть текста пропустил
Само собой, вы получите список ntp-серверов, только в том случае если ваш dhcp сервер их распространяет.
Служба синхронизации времени
В системах работающих на systemd работает специальная служба синхронизации времени systemd-timesyncd.service. Можем посмотреть её статус:
alex@ubu:~$ systemctl status systemd-timesyncd.service ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-07-13 17:08:06 MSK; 23s ago Docs: man:systemd-timesyncd.service(8) Main PID: 399 (systemd-timesyn) Status: "Initial synchronization to time server 192.168.0.16:123 (192.168.0.16)." Tasks: 2 (limit: 2241) Memory: 1.3M CPU: 63ms CGroup: /system.slice/systemd-timesyncd.service └─399 /lib/systemd/systemd-timesyncd
Видим что синхронизация идет с сервером по адресу 192.168.0.16. У меня этот адрес прилетел по dhcp.
Обратите внимание, что служба эта стартует по запросу и останавливается после синхронизации времени!
Давайте выключим получение ntp серверов по dhcp:
alex@ubu:~$ sudo nano /etc/dhcp/dhclient.conf # в этой строке удалите опцию ntp-servers request subnet-mask, broadcast-address, time-offset, routers, domain-name, domain-name-servers, domain-search, host-name, dhcp6.name-servers, dhcp6.domain-search, dhcp6.fqdn, dhcp6.sntp-servers, netbios-name-servers, netbios-scope, interface-mtu, rfc3442-classless-static-routes;
Вы можете использовать следующий пул серверов времени для синхронизации – https://www.pool.ntp.org/zone/ru. Укажем первый сервер из этого пула в конфиге /etc/systemd/timesyncd.conf:
alex@ubu:~$ sudo nano /etc/systemd/timesyncd.conf [Time] NTP=0.ru.pool.ntp.org FallbackNTP=ntp.ubuntu.com RootDistanceMaxSec=5 PollIntervalMinSec=32 PollIntervalMaxSec=2048
В конфиге используются следующие опции:
- NTP – укажите 1 или несколько ntp серверов. Если хотите указать несколько серверов, разделяйте их пробелами;
- FallbackNTP – укажите 1 или несколько резервных ntp серверов;
- RootDistanceMaxSec – максимальное время в секундах, за которое пакет от сервера эталонного времени должен доходить до сервера к которому мы подлкючены;
- PollIntervalMinSec и PollIntervalMaxSec – минимальный и максимальный интервалы синхронизаций времени. Вначале используется минимальный интервал, а затем он увеличивается если система видит что локальное время со временем ntp-сервера не расходится.
После правки перезапустите службу синхронизаций времени:
alex@ubu:~$ sudo systemctl restart systemd-timesyncd.service
Дополнительно можно посмотреть информацию по синхронизации времени с помощью следующей команды:
alex@ubu:~$ timedatectl timesync-status Server: 91.209.94.10 (0.ru.pool.ntp.org) Poll interval: 34min 8s (min: 32s; max 34min 8s) Leap: normal Version: 4 Stratum: 2 Reference: 3EE70662 Precision: 1us (-25) Root distance: 4.012ms (max: 5s) Offset: -5.502ms Delay: 11.084ms Jitter: 2.886ms Packet count: 7 Frequency: +15,118ppm
Здесь мы видим адрес ntp-сервера, а также какой интервал синхронизации (34min 8s) использовался последний раз.
То-есть служба синхронизации времени systemd-timesyncd.service будет запускаться и останавливаться сейчас примерно раз в 34 минуты. Поэтому если увидите, что служба в состоянии loaded и inactive, не пугайтесь. По логам видно что она периодически запускается:
alex@ubu:~$ systemctl status systemd-timedated ○ systemd-timedated.service - Time & Date Service Loaded: loaded (/lib/systemd/system/systemd-timedated.service; static) Active: inactive (dead) Docs: man:systemd-timedated.service(8) man:localtime(5) man:org.freedesktop.timedate1(5) июл 19 15:54:24 s-ubu systemd[1]: systemd-timedated.service: Deactivated successfully. июл 19 15:55:41 s-ubu systemd[1]: Starting Time & Date Service... июл 19 15:55:41 s-ubu systemd[1]: Started Time & Date Service. июл 19 15:56:35 s-ubu systemd[1]: systemd-timedated.service: Deactivated successfully. июл 19 16:05:45 s-ubu systemd[1]: Starting Time & Date Service... июл 19 16:05:45 s-ubu systemd[1]: Started Time & Date Service. июл 19 16:06:15 s-ubu systemd[1]: systemd-timedated.service: Deactivated successfully. июл 19 16:28:42 s-ubu systemd[1]: Starting Time & Date Service... июл 19 16:28:42 s-ubu systemd[1]: Started Time & Date Service. июл 19 16:30:17 s-ubu systemd[1]: systemd-timedated.service: Deactivated successfully.
Из вывода:
- Deactivated successfully – служба останавливается;
- Starting Time & Date Service… – служба стартует;
- Started Time & Date Service – служба стартовала;
- и так по кругу.
Ещё один способ задать часовой пояс
С помощью команды dpkg-reconfigure tzdata также можно задать часовой пояс:
alex@ubu:~$ sudo dpkg-reconfigure tzdata
После выполнения вы можете использовать псевдографический интерфейс для настройки часового пояса. Вначале выберите географический район:
Затем город:
Итог
Теперь вы знаете как настроить время на сервере Debian или Ubuntu. Мы научились устанавливать часовой пояс и настраивать синхронизации времени с ntp серверами.
Узнали про следующие команды:
- date – покажет текущую дату, время и часовой пояс;
- timedatectl – покажет тоже самое что и date + синхронизуется ли время;
- timedatectl list-timezones – покажет список поддерживаемых часовых поясов;
- timedatectl set-timezone Europe/Moscow – установить часовой пояс Europe/Moscow;
- timedatectl timesync-status – покажет с какими ntp-серверами синхронизуется время и как часто;
- dpkg-reconfigure tzdata – установить часовой пояс.
Познакомились с файлами:
- /etc/localtime – является символической ссылкой и содержит информацию о текущем часовом поясе;
- /etc/dhcp/dhclient.conf – настройки dhcp-клиента, который умеет запрашивать ntp-сервера для синхронизации времени;
- /etc/systemd/timesyncd.conf – настройки службы синхронизации времени.
Узнали про службу синхронизации времени:
- systemd-timedated.service – стартует по запросу, а после синхронизации времени отключается до следующей синхронизации.
Сводка
Имя статьи
Дата, время и часовой пояс в Linux
Описание
В статье мы разберёмся с тем, как настроить время в Linux. Посмотрим текущее время, укажем часовой пояс и настроим синхронизацию времени
Состояние перевода: На этой странице представлен перевод статьи System time. Дата последней синхронизации: 4 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
В операционной системе время (часы) определяется тремя понятиями: значением времени (будь то местное время, UTC или что-то другое), часовым поясом и информацией о переходе на летнее время (DST), если это применимо. Эта статья рассказывает, что это такое и как их читать и менять. В системах присутствуют двое часов: аппаратные часы и системные часы, которые также подробно описаны в этой статье.
Стандартное поведение большинства операционных систем таково:
- При загрузке для системных часов устанавливается значение из аппаратных часов.
- Поддерживается точное время системных часов; смотрите #Синхронизация времени.
- При выключении для аппаратных часов устанавливается значение из системных часов.
Аппаратные часы
Аппаратные часы (они же часы реального времени (RTC) или часы CMOS) хранят следующие значения: год, месяц, день, час, минута и секунда. Только в прошивках UEFI 2016 года или новее есть возможность хранить часовой пояс, а также информацию о переходе на летнее время.
Просмотр времени из аппаратных часов
# hwclock --show
Изменение времени аппаратных часов по системным часам
Следующая команда устанавливает время в аппаратных часах, беря значение из системных часов. Кроме того, она обновляет файл /etc/adjtime
или создаёт его, если он отсутствует. Смотрите раздел «The Adjtime File» в hwclock(8) для более подробной информации, а также раздел #Погрешность часов.
# hwclock --systohc
Системные часы
Системные часы (они же программные часы) отслеживают время, часовой пояс и информацию о переходе на летнее время, если применимо. В ядре Linux они представлены как количество секунд, прошедших с полуночи 1 января 1970 года по UTC. Начальное значение системных часов вычисляется из аппаратных часов в зависимости от содержимого файла /etc/adjtime
. После завершения загрузки системные часы работают независимо от аппаратных часов. Ядро Linux отслеживает системные часы путём подсчета прерываний таймера.
Просмотр времени
Для проверки текущего времени системных часов (представленных как в местном времени, так и в UTC), а также RTC (аппаратных часов):
$ timedatectl
Изменение времени системых часов
Установка местного времени для системых часов:
# timedatectl set-time "гггг-ММ-дд чч:мм:сс"
Например:
# timedatectl set-time "2014-05-26 11:13:54"
Установит 26 мая 2014 года, 11 часов 13 минут 54 секунды.
Стандарт времени
Есть два основных стандарта времени: местное (локальное) время (localtime) и Всемирное координированное время (Coordinated Universal Time, UTC). Местное время зависит от текущего часового пояса, а время UTC — это глобальное время, которое одинаково для всех и не зависит от часовых поясов. UTC иногда называют гринвичским временем (GMT), хотя это немного разные вещи.
Стандарт, который будет использоваться в аппаратных часах, выбирается операционной системой. По умолчанию Windows использует местное время, macOS использует UTC, а другие UNIX и UNIX-подобные системы используют разные стандарты. ОС, использующая стандарт UTC, обычно рассматривает аппаратные часы как UTC и вносит в них поправку для установки времени ОС при загрузке в соответствии с часовым поясом.
Если на машине установлено несколько операционных систем, все они будут получать текущее время от одних и тех же аппаратных часов: рекомендуется настроить их на использование UTC, чтобы избежать конфликтов. В противном случае, если аппаратные часы установлены на местное время, сразу несколько операционных систем могут попытаться скорректировать его, например, после перехода на летнее/зимнее время, что приведёт к избыточной коррекции; проблемы могут также возникнуть при перемещении между различными часовыми поясами и использовании одной из операционных систем для сброса системных/аппаратных часов.
Значение аппаратных часов можно прочитать и изменить с помощью команды timedatectl
.
Вы можете узнать текущий стандарт, который Arch использует для работы с аппаратными часами, с помощью следующей команды:
$ timedatectl | grep local
RTC in local TZ: no
Переход на использование местного времени для аппаратных часов:
# timedatectl set-local-rtc 1
Переход на использование UTC для аппаратных часов:
# timedatectl set-local-rtc 0
Эти команды автоматически обновят аппаратные часы и файл /etc/adjtime
, дополнительные действия не требуются.
Во время запуска ядра, в момент загрузки драйвера RTC, значение системных часов может быть установлено по аппаратным часам. Произойдет ли это, зависит от аппаратной платформы, версии ядра и опций сборки ядра. Если это происходит, то в этот момент последовательности загрузки время аппаратных часов принимается за UTC и значение /sys/class/rtc/rtcN/hctosys
(N=0,1,2,..) будет установлено в 1.
Позже systemd снова обновляет системное время по аппаратным часам, опираясь на значения в /etc/adjtime
. Следовательно, использование аппаратных часов с местным временем может привести к неожиданному поведению во время загрузки, например, системные часы могут перескочить назад по времени, что всегда является плохой идеей (это ещё не всё). Чтобы избежать этого, systemd будет синхронизироваться назад, только если аппаратные часы установлены в UTC, и не будет информировать ядро о локальном часовом поясе. Как следствие, временные метки на файловой системе FAT, которые изменены через Linux, будут в UTC.
Примечание:
- Использование
timedatectl
требует активной шины D-Bus. Поэтому использование этой команды под chroot (например, во время установки) может оказаться невозможным. В таких случаях можно вернуться к команде hwclock или использовать systemd-nspawn вместо chroot. - Если файл
/etc/adjtime
отсутствует, systemd по умолчанию считает, что аппаратные часы используют UTC.
UTC в Microsoft Windows
При двойной загрузке с Windows рекомендуется настроить Windows на использование UTC, а не настраивать Linux на использование местного времени. (По умолчанию Windows использует местное время [1].)
Это делается простым изменением в реестре: откройте regedit
и добавьте DWORD
ключ со значением 1
здесь:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformationRealTimeIsUniversal
Это можно сделать одной командой в командной строке, запущенной от имени администратора:
reg add "HKEY_LOCAL_MACHINESystemCurrentControlSetControlTimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f
Также можно создать *.reg
файл и импортировать его в реестр двойным щелчком мыши:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTimeZoneInformation] "RealTimeIsUniversal"=dword:00000001
Если Windows попросит обновить часы в связи с изменениями DST, позвольте ей это сделать. Часы останутся в UTC, как и ожидалось, скорректируется только отображаемое время.
После этого #Аппаратные часы и #Системные часы может понадобиться обновить.
Если у вас проблемы со смещением времени, попробуйте переустановить tzdata и заново установить часовой пояс:
# timedatectl set-timezone Europe/Moscow
Исторические примечания
В очень старых версиях Windows это всё не работает из-за их багов. Более конкретно,
- В 64-битных версиях Windows 7 и старых сборках Windows 10 существовала ошибка, из-за которой требовалось значение
QWORD
со значением1
вместоDWORD
. Эта ошибка была исправлена в новых сборках, и теперь работает толькоDWORD
. - До Vista SP2 существовала ошибка, которая сбрасывала часы на местное время после возвращения из ждущего или спящего режима.
- В XP и более старых версиях есть ошибка, связанная с переходом на летнее время. Подробнее: [2]
- Для еще более старых версий Windows лучше прочитать https://www.cl.cam.ac.uk/~mgk25/mswish/ut-rtc.html — тогда эта функциональность даже не была задокументирована и официально не поддерживалась.
Для этих операционных систем рекомендуется использовать местное время.
UTC в Ubuntu
Если Ubuntu на любом диске обнаруживает Windows в процессе установки, то для аппаратных часов она автоматически начинает использовать местное время. Очевидно, это сделано специально, чтобы позволить новым пользователям Linux опробовать Ubuntu на своих компьютерах с Windows без редактирования реестра.
Изменить это поведение можно так же, как описано выше.
Часовой пояс
Узнать текущий часовой пояс, установленный в системе:
$ timedatectl status
Просмотр списка доступных часовых поясов:
$ timedatectl list-timezones
Изменение часового пояса:
# timedatectl set-timezone Регион/Город
Например:
# timedatectl set-timezone Europe/Moscow
Эта команда создаст символическую ссылку /etc/localtime
, которая ведёт на соответствующий файл с информацией о зоне в /usr/share/zoneinfo/
. Если вам нужно создать её вручную (например, внутри chroot, где timedatectl
не работает), имейте в виду, что это должна быть именно символическая ссылка:
# ln -sf /usr/share/zoneinfo/Регион/Город /etc/localtime
Совет: Можно найти и выбрать нужный часовой пояс с помощью интерактивного помощника tzselect.
Смотрите timedatectl(1) и localtime(5) для более подробной информации.
Выбор на основе геолокации
Примечание: Некоторые среды рабочего стола поддерживают автоматический выбор часового пояса (например, смотрите GNOME (Русский)#Дата и время).
Чтобы автоматически выбрать часовой пояс на основе информации об IP-адресе, можно использовать какой-нибудь API геолокации для получения часового пояса (нпример curl https://ipapi.co/timezone
) и передать его вывод в команду timedatectl set-timezone
. Примеры бесплатных или частично бесплатных GeoIP API:
- Abstract IP geolocation API
- FreegeoIP
- IP-api
- IPAPI
- Ipdata
- Ipstack
- TimezoneApi
Обновление часового пояса после подключения к сети через NetworkManager
Создайте скрипт NetworkManager dispatcher:
/etc/NetworkManager/dispatcher.d/09-timezone
#!/bin/sh case "$2" in up) timedatectl set-timezone "$(curl --fail https://ipapi.co/timezone)" ;; esac
Также можно использовать tzupdateAUR для автоматического выбора часового пояса по IP-адресу. Сравнение наиболее популярных API IP-геолокации поможет выбрать подходящий вариант.
Погрешность часов
Нет ничего идеального. В том числе и часов. Время на любых часах хоть немного но отличается от реального. Одними из наиболее точных считаются атомные часы. Кварцевые часы, используемые в компьютерах, также не являются абсолютно точными, зато имеют относительно постоянную погрешность.
При установке аппаратных часов с помощью hwclock
рассчитывается новое значение дрейфа в секундах в день. Значение дрейфа вычисляется с помощью разницы между новым установленным значением и значением аппаратных часов непосредственно перед установкой, с учётом значения предыдущего значения дрейфа и времени последней установки аппаратных часов. Новое значение дрейфа и время, когда часы были установлены, записываются в файл /etc/adjtime
, перезаписывая предыдущие значения. Таким образом, аппаратные часы могут быть скорректированы с учётом дрейфа при выполнении команды hwclock --adjust
; это также происходит при выключении, но только если демон hwclock
включен, поэтому в Arch-системах, использующих systemd, этого не происходит.
Примечание: Если время аппаратных часов устанавливается повторно менее чем через 24 часа после предыдущей установки, дрейф не пересчитывается, поскольку hwclock
считает прошедший период времени слишком коротким для точного расчёта дрейфа.
Если аппаратные часы продолжают терять или набирать время с большим шагом, возможно, что был записан некорректный дрейф (но это применимо только в том случае, если запущен демон hwclock). Это может произойти, если вы неправильно установили время аппаратных часов или ваш стандарт времени не совпадает со стандартом времени в Windows или macOS. Значение дрейфа можно сбросить, сначала удалив файл /etc/adjtime
, а затем установив правильное время аппаратных и системных часов. Затем следует проверить правильность используемого стандарта времени.
Примечание: Если вы хотите использовать значение дрейфа, хранящееся в /etc/adjtime
, даже при использовании systemd (например, вы не можете или не хотите использовать NTP), вы должны регулярно вызывать hwclock --adjust
, например, создав задание cron.
Программные часы очень точны, но, как и большинство часов, не идеально точны и могут дрейфовать. Хотя и редко, системные часы могут потерять точность, если ядро пропускает прерывания. Существуют некоторые инструменты для повышения точности программных часов; смотрите #Синхронизация времени.
Синхронизация времени
Network Time Protocol (NTP) — это протокол для синхронизации часов компьютерных систем в сетях передачи данных с коммутацией пакетов и переменной задержкой. Ниже приведены реализации NTP, доступные для Arch Linux:
- Chrony — Клиент и сервер, дружественный к роумингу и разработанный специально для систем, которые не находятся в сети постоянно.
- https://chrony.tuxfamily.org/ || chrony
- ConnMan — Лёгкий сетевой менеджер с поддержкой NTP.
- https://01.org/connman (waybackmachine) || connman
- Network Time Protocol daemon — Эталонная реализация протокола, особенно рекомендуемая для использования на серверах времени. Она также может регулировать частоту прерываний и количество тиков в секунду для уменьшения дрейфа системных часов и будет вызывать повторную синхронизацию аппаратных часов каждые 11 минут.
- https://www.ntp.org/ || ntp
- ntpclient — Простой NTP-клиент с интерфейсом командной строки.
- http://doolittle.icarus.com/ntpclient/ || ntpclientAUR
- NTPsec — Форк NTPd, ориентированный на безопасность.
- https://ntpsec.org/ || ntpsecAUR
- OpenNTPD — Является частью проекта OpenBSD и реализует как клиент, так и сервер.
- https://www.openntpd.org/ || openntpd
- sntp — Клиент SNTP, который поставляется вместе с NTPd. Он заменяет ntpdate и рекомендуется в несерверных средах.
- https://www.ntp.org/ || ntp
- systemd-timesyncd — Простой демон SNTP, который реализует только клиентскую часть, фокусируясь только на запросе времени с одного удалённого сервера. Он должен быть более чем подходящим для большинства установок.
- https://www.freedesktop.org/wiki/Software/systemd/ || systemd
Настройки для пользователя/сессии или временные настройки
В некоторых случаях может быть полезно изменить настройки времени, не затрагивая глобальные системные значения. Например, для тестирования приложений, полагающихся на время во время разработки, или для настройки системного часового пояса при удалённом входе на сервер из другой зоны.
Чтобы заставить приложение «видеть» дату/время, отличное от системного, можно воспользоваться утилитой faketime(1) (из пакета libfaketime).
Если вы хотите, чтобы приложение «видело» часовой пояс, отличный от системного, установите переменную окружения TZ
, например:
$ date && export TZ=":/usr/share/zoneinfo/Pacific/Fiji" && date
Вт 01 ноя 2016 16:34:51 MSK Ср 02 ноя 2016 01:34:51 +12
Это отличается от простой установки времени, поскольку, например, позволяет протестировать поведение программы с положительными или отрицательными значениями смещения UTC, или влияние изменений летнего/зимнего времени при разработке на системах с часовым поясом, в котором нет переходов на летнее/зимнее время.
Другим вариантом использования является установка разных часовых поясов для разных пользователей одной системы: это можно сделать, установив переменную TZ
в конфигурационном файле оболочки; смотрите Переменные окружения#Установка переменных.
Советы и рекомендации
fake-hwclock
alarm-fake-hwclock разработан специально для систем без нормально работающих аппаратных часов. Он включает в себя службу systemd, которая при выключении сохраняет текущее время, а при следующем запуске восстанавливает сохранённое время, таким образом избегая странных ошибок путешествия во времени.
Установите пакет fake-hwclock-gitAUR, запустите и включите службу fake-hwclock.service
.
Решение проблем
Часы показывают значение, которое не является ни UTC, ни местным временем
Это может быть вызвано рядом причин. Например, если ваши аппаратные часы используют местное время, но timedatectl
настроен на то, чтобы считать, что они используют UTC, в результате смещение вашего часового пояса относительно UTC будет применено дважды, что приведёт к неправильным значениям местного времени и UTC.
Чтобы заставить ваши часы показывать правильное время, а также записать правильный UTC в ваши аппаратные часы, выполните следующие шаги:
- Настройте ntpd (включать его как службу не обязательно).
- Установите правильный часовой пояс.
- Запустите
ntpd -qg
для ручной синхронизации ваших часов с сетью, игнорируя большие отклонения между локальным UTC и сетевым UTC. - Запустите
hwclock --systohc
для записи текущего системного времени в аппаратные часы.
Смотрите также
- Linux Tips — Linux, Clocks, and Time
- An introduction to timekeeping in Linux VMs
- Источники данных, определяющие часовые пояса и переход на летнее время для пакета tzdata
- Time Scales
- Gentoo:System time
- Время (Википедия)
Currently when I execute the date command from bash I get the following displayed
Thu May 17 12:21:00 IST 2012
Below is my timezone config based on executing dpkg-reconfigure tzdata
Current default time zone: 'Europe/Dublin' Local time is now: Thu May 17 12:32:52 IST 2012. Universal Time is now: Thu May 17 11:32:52 UTC 2012.
Any idea how I change from IST to UTC/GMT?
muru
189k52 gold badges460 silver badges711 bronze badges
asked May 17, 2012 at 14:22
Any idea how I change from IST to GMT?
To switch to UTC, simply execute sudo dpkg-reconfigure tzdata
, scroll to the bottom of the Continents list and select Etc
or None of the above
; in the second list, select UTC
. If you prefer GMT instead of UTC, it’s just above UTC in that list.
answered May 17, 2012 at 15:01
ishish
137k36 gold badges302 silver badges312 bronze badges
6
sudo timedatectl set-timezone UTC
Will change your timezone to UTC system wide.
You can do timedatectl list-timezones
to see all the available timezones.
excerpt from @MattJohnson’s answer on SO
Zones like
Etc/GMT+6
are intentionally reversed for backwards compatibility with POSIX standards. See the comments in this file.You should almost never need to use these zones. Instead you should be using a fully named time zone like
America/New_York
orEurope/London
or whatever is appropriate for your location. Refer to the list here.
abu_bua
10.1k10 gold badges41 silver badges60 bronze badges
answered Jul 20, 2016 at 0:46
dkamdkam
1,0117 silver badges4 bronze badges
0
In the old Un*x style (SunOS, HPUX…), you can do:
ln -fs /usr/share/zoneinfo/UTC /etc/localtime
Check the contents of /usr/share/zoneinfo to get the timezone you want/need.
For instance, Irish Summer Time (IST) can be defined as
-rw-r--r-- 1 root root 3661 Mar 13 22:18 /usr/share/zoneinfo/posix/Eire
or
lrwxrwxrwx 1 root root 13 Mar 13 22:18 /usr/share/zoneinfo/Europe/Dublin -> ../posix/Eire
However, the most important is to use a proper clock reference and a ntp daemon (openntpd for instance), as timezone is only used for displaying/converting the time to strings, not to store it (whatever the timezone, difference to 01/01/1970 is everywhere the same on Earth).
answered May 14, 2014 at 10:47
MarabilosoMarabiloso
1911 silver badge3 bronze badges
1
Updated for 14.04 to present
View Time and Date Status:
$ timedatectl status
Local time: Sun 2018-07-29 15:26:03 BST
Universal time: Sun 2018-07-29 14:26:03 UTC
RTC time: Sun 2018-07-29 14:26:03
Time zone: Europe/London (BST, +0100)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no
View List of Timezones:
Listed Timezones (425)
$ timedatectl list-timezones
Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
...
Pacific/Tongatapu
Pacific/Wake
Pacific/Wallis
UTC
Set Timezone to UTC:
$ timedatectl set-timezone UTC
View Time and Date Status:
$ timedatectl status
Local time: Sun 2018-07-29 14:46:27 UTC
Universal time: Sun 2018-07-29 14:46:27 UTC
RTC time: Sun 2018-07-29 14:46:27
Time zone: UTC (UTC, +0000)
System clock synchronized: yes
systemd-timesyncd.service active: yes
RTC in local TZ: no*
answered Jul 29, 2018 at 14:56
BroadswordeBroadsworde
3,6584 gold badges23 silver badges44 bronze badges
4
Something like this?
$ date
Wed Jul 16 22:52:47 EDT 2014
$ cat /etc/timezone
America/New_York
$ sudo dpkg-reconfigure tzdata
$ service cron stop && service cron start
answered Jul 17, 2014 at 3:01
KeremKerem
6869 silver badges13 bronze badges
In case you need this for only a single command, say, ls
, use this:
TZ=UTC ls -l --full-time
answered Jun 23, 2020 at 18:33
Christian HujerChristian Hujer
2,2221 gold badge14 silver badges16 bronze badges
You can check the time zone using the timedatectl
and date
commands or trace the path to the file containing time zone information. You can then change the time zone using the terminal, time zone selection menu or a graphical user interface.
This tutorial helps you change the time zone in Linux using straightforward steps. Read on to learn more.
Table of Contents
- Understand Time zones and Standards
- How to check the Time Zone in Linux
- Top 3 ways to Set/Change time zone in Linux
- 1. Set the time zone using the terminal
- 2. Change the time zone using a selection menu
- 3. Change the time zone using a Graphical User Interface
- Conclusion
Understand Time zones and Standards
A region on earth bound by longitudes is called a time zone. Longitudes are 15 degrees away from one another and run from the North pole to the South Pole, dividing the world into 24 time zones. There exists a time difference of 1 hour between the time zones.
The time zone standards date back to a conference in the International Meridian, which concluded that time starts at Greenwich, London. The system of 24 time zones was named Greenwich Mean Time (GMT). From the 1880s to the 1930s, most countries had synchronized their times with the GMT.
The dawn of the internet in the 1980s saw most operating systems adopt the UTC to ease collaboration among computer programmers and internet users. The time information is stored in the Time Zone (TZ) database, helping to improve consistency when handling the OS or computer programs.
Most countries often change their time zones as influenced by daylight service, economic or political factors. As a result, it is necessary to apply the time zone principles in synchronizing your clock. Let’s see how to do that.
How to check the Time Zone in Linux
The date
or timedatectl
commands let you view the system’s time.
Let’s head over to the terminal and type timedatectl
.
date
OR
timedatectl
The system returns information like your local time, universal time, time zone, NTP service status and whether the system clock is synchronized.
For example, I get the following data.
Local time: Tue 2022-05-24 16:41:22 CEST Universal time: Tue 2022-05-24 14:41:22 UTC RTC time: Tue 2022-05-24 14:41:22 Time zone: Europe/Berlin (CEST, +0200) System clock synchronized: yes NTP service: active RTC in local TZ: no
- Local time is the current time according to your time zone.
- Universal time is the global standard time, measured from the Greenwich meridian. It is also called the Zulu time or universal coordinated time (UTC).
- The RTC time tells the time according to the settings of your operating system.
- My time zone is East African Time, and it is 3 hours ahead of the UTC. The system time zone data gets configured by symlinking the
/etc/localtime
file’s content to the/usr/share/zoneinfo
directory. So, another way to check your local time zone is tols
the file.
ls -l /etc/localtime
- A system clock synchronized enquiry with a value of yes means the time is synchronized successfully.
- The NTP (Networking time protocol) service synchronizes time between computer systems and the internet’s time servers. My NTP service is active. Yours should, too. However, install it using the ntpdate package if you can’t see yours.
Ubuntu/Debian/Linux Mint
sudo apt install ntpdate
Red Hat/Fedora/CentOS/Rocky Linux/AlmaLinux
sudo yum install ntpdate
- Lastly, you may also see RTC in local TZ equating to no, meaning the RTC is not available in the local time zone.
Now that you understand the origin of time zones, how to check the current time zone, and time standards, let’s see how o change the time zone.
Top 3 ways to Set/Change time zone in Linux
The three ways to set the time zone in Linux are using the terminal, selection menu or a GUI in Linux desktops like Ubuntu.
1. Set the time zone using the terminal
timedatectl
Output
Local time: Tue 2022-05-24 16:41:22 CEST Universal time: Tue 2022-05-24 14:41:22 UTC RTC time: Tue 2022-05-24 14:41:22 Time zone: Europe/Berlin (CEST, +0200) System clock synchronized: yes NTP service: active RTC in local TZ: no
Enter the date
command to check your latest time zone on the terminal.
date
Depending on your distribution or previous settings, you should see the date, current time, day, time zone and year. In my case, the system tells me it is the 24th of May; the time is 4:41 pm, Tuesday on Central European Summer Time, and the year is 2022.
Tue May 24 04:41:30 PM CEST 2022
Let’s now view all the time zones before picking the target one.
View all available time zones:
ls -R /usr/share/zoneinfo
Select the target time zone:
tzselect
On running the tzselect
command, the system presents you with the continents to choose your time zone from. Pick the corresponding number, then press enter
on your keyboard. For instance, I have chosen 2 for Americas.
A list of countries pops up. Likewise, choose the target country using its corresponding number. For example, I have picked 5 for Bahamas.
Confirm that you want to set the time zone by picking either 1 for Yes or 2 for No. I go for Yes by pressing digit 1 on my keyboard.
Lastly, confirm that the time zone was reset by rerunning the date command. If no, try solution 2 below.
date
Bonus trick
Here is another route to check and change the time zone information on the terminal.
List all time zones
timedatectl list-timezones
Change the time zone by specifying it
sudo timedatectl set-timezone <target time zone>
For Example:
sudo timedatectl set-timezone Africa/Nairobi
It turns out the first procedure above changed the time zone temporarily. As guided in the terminal, you can make the change permanent by appending the TZ='<Chosen time zone>'
to your .profile
file in your home directory.
Alternatively, use the straightforward time zone menu in most Linux distributions.
Run the dpkg-reconfigure
command with the tzdata
option.
Ubuntu/Mint
sudo dpkg-reconfigure tzdata
Fedora/CentOS
system-config-date
Red Hat/CentOS/Rocky Linux/AlmaLinux
redhat-config-date
Scroll up or down the presented menu till you meet your geographical area, then press the enter key to select it.
Next, choose the time zone.
You can then confirm the change using the date command.
And voila, my time zone got changed from -03
to CEST
!
3. Change the time zone using a Graphical User Interface
The last way to change the time zone is to use a graphical user interface on some Linux distributions like the Ubuntu desktop.
Follow this file path to change the time zone on the Ubuntu desktop: System menu -> Settings -> Date & Time.
Start by clicking the system menu on the top right corner.
Next, click on Settings, then scroll down the left sidebar till you reach Date & Time.
Disable Automatic Date & Time by clicking on the adjacent button till it turns grey.
Click on Time Zone.
On top of the presented map, search your target time zone or its approximate location.
Select it to change the chosen time zone, then close the modal. Now recheck the settings on the terminal using the date command.
date
Output
Tue May 24 14:21:48 EAT 2022
Conclusion
You can check or set/change the time zone in Linux using the terminal, selection menu or the GUI. Choose what suits your Linux distribution and configure its time zone, as guided in this tutorial.