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

222

У меня есть виртуальная машина, настроенная на PST, которую пара коллег имеет в разных часовых поясах.

Если я хочу изменить часовой пояс на EST и GMT , что мне нужно сделать?

manyxcxi
источник

Ответы:

290

использование timedatectl

sudo timedatectl set-timezone <timeszone>

Примеры:

  • Часовой пояс как EST

    sudo timedatectl set-timezone EST
    
  • Часовой пояс как UTC

    sudo timedatectl set-timezone UTC
    
  • Список всех действительных часовых поясов

    timedatectl list-timezones
    

Эта команда идеально подходит для сценариев автоматизации, поскольку она не требует какого-либо взаимодействия с пользователем по сравнению с другими ответами на основе dpkg-reconfigure tzdata.

Йосеф Харуш
источник
1
Не фанат +1 комментариев, но выкладываю один здесь, так как это сработало для меня наилучшим образом. Я хотел использовать инструмент командной строки в одну строку для изменения часового пояса, а не запускать какую-либо целую программу меню или графического интерфейса (я не знаю, что tzdataделает, как это работает, но мне не нужно с этим однострочная команда). Спасибо!
Фил Райан
работает как шарм;)
user332660
Интересно, что он делает что-то немного отличное от tzdata. У меня была проблема с временем Java, отличным от системного времени после применения патча. Цдата не работал, чтобы решить проблему, но это сделало.
Дэниел Бауэр
1
это не сработало для меня; Однако, dpkg-reconfigureсделал свое дело.
Антти Хаапала
14.04.4 сервер Ubuntu
Антти Хаапала
40

В качестве пользователя root вы должны выполнить:

dpkg-reconfigure tzdata

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

maxschlepzig
источник
32

Следующие также работают. Для GMT:

ln -sf /usr/share/zoneinfo/GMT /etc/localtime

Лес:

ln -sf /usr/share/zoneinfo/EST /etc/localtime
pm_labs
источник
8
Я думаю, что было бы лучше связать один из файлов города, а не GMT ​​или EST, так как тогда они будут отслеживать летнее время, тогда как привязка (например) GMT не изменит системное время, чтобы отразить, когда действует летнее время в вашем городе. Например:ln -sf /usr/share/zoneinfo/Europe/London /etc/localtime
Асфанд Кази
это лучшее
Хасан Тынгыр
16

Самый простой способ, особенно для сервера, - перечислить часовые пояса:

timedatectl list-timezones

И выберите свой, например:

timedatectl set-timezone Europe/Athens

Это оно! , :-)

Димитриос
источник
6

Чтобы запустить одну программу с другим параметром часового пояса, задайте TZпеременную среды, например, запустите, TZ=Pacific/Kiritimati dateчтобы увидеть, который час на Острове Рождества, или export TZ=Pacific/Kiritimatiустановите этот параметр последним для сеанса оболочки.

жилль
источник
6

Отредактируйте timezoneфайл в /etcпапке как:

Etc/GMT

Вы можете использовать следующий формат:

Region "/" City 

Пример /etc/timezone:

Europe/Athens

или же

Europe/Paris
Europe/London

Вы можете поэкспериментировать с: dpkg-reconfigure tzdata и проверить cat файл часовых поясов.

Вы должны перезагрузить или снова запустить службу (не службу ntp). Я не знаю, какой. Если кто-то знает, пожалуйста, поделитесь с нами. (Протестировано на Ubuntu 15.10, изменение учитывается мгновенно)

chasapis.christos
источник
4
cp -p /usr/share/zoneinfo/US/Pacific /etc/localtime

Я рекомендую ПРОТИВ связывания, как упомянуто другими. Если какой-либо сценарий случайно /etc/localtimeперезаписывает ваш файл, то он перезаписывает ваш файл с часовым поясом в Тихом океане ... и заменить его немного затруднительно.

Просто скопируйте файл Pacific по файлу localtime с помощью команды выше.

Дж Ройсдон
источник
Это на самом деле работает для меня. Я думаю, что есть какая-то ошибка с Docker, ansible (?). Как timedatectl, так и dpkg -configure tzdata мне не удалось. После того, как я скопировал, часовой пояс изменился с EST на PDT.
Вс
2

Я использую следующий скрипт, чтобы спросить пользователя, какой часовой пояс установить, а затем подтвердить, что он действительно установлен:

#!/bin/sh
sudo timedatectl set-timezone $(tzselect)
echo
echo timedatectl says:
timedatectl

Я называю это tz-set.

Том Хейл
источник
0

В качестве пользователя root вы должны выполнить:

ln -fs /usr/share/zoneinfo/Europe/Warsaw /etc/localtime && dpkg-reconfigure --frontend noninteractive tzdata

Стефан Себастьян
источник
Пожалуйста, объясните хотя бы, как эта команда работает для изменения часового пояса.
Парто
0

Это сработало для меня на GCP Ubuntu 14 через SSH

  1. sudo su
  2. cp /usr/share/zoneinfo/Asia/Singapore /etc/localtime
  3. Перезагрузите сервер
  4. Готово
Виньеш Чиннайян
источник