25

Dreamhost, кажется, думает, что нам нравится PDT, несмотря на то, что мы на Среднем Западе. Как мне изменить часовой пояс?

5 ответов5

60

Инструмент, который я нашел более простым в использовании, это dpkg-reconfigure . Использование:

sudo dpkg-reconfigure tzdata

Вам будет предложено множество вариантов, включая те, которые не включены в tzselect .

11

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

Если вам нужно неинтерактивное решение, попробуйте это решение, изменив часовой пояс с помощью dpkg -configure tzdata и debconf-set-selections

echo "Europe/Zurich" > /etc/timezone 
dpkg-reconfigure -f noninteractive tzdata

Вы можете выяснить свой часовой пояс, покопавшись в /usr /share /zoneinfo. Фактически вышеприведенная команда dpkg-reconfigure копирует соответствующий файл в /etc /localtime. Раньше я делал это вручную, и, похоже, все работает нормально.

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

7

Обновить:

Канонический ответ (за что Ynhockey заслуживает похвалы) выглядит так:

dpkg-reconfigure tzdata

Мой оригинальный ответ ниже. Я бы просто удалил этот ответ полностью, но superuser.com не позволяет удалять принятые ответы.

http://www.debian-administration.org/articles/213 говорит

простой способ отредактировать ваш часовой пояс - использовать команду /usr/bin/tzselect .

...

После того, как вы установили часовой пояс, вы можете захотеть изменить настройку UTC, на машинах Debian вы можете найти это в файле /etc/default/rcS . Хотя изменение этого потребует перезагрузки.

6

Чтобы не редактировать его в последних версиях Debian и Ubuntu (Stretch/Xenial и т.д.), Вам также необходимо удалить /etc/localtime , иначе /etc/timezone будет перезаписан.

echo 'Europe/Zurich' > /etc/timezone 
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata

Этот ответ основан на ответе mc0e. Я не могу добавить комментарий с моей репутацией.

2

TL; DR

echo "TZ=Etc/UTC" >> /etc/environment
tzconfig

где Etc/UTC - ваш предпочтительный часовой пояс, который вы нашли с помощью tzselect .

Более длинная версия

Когда вы используете

dpkg-reconfigure tzdata

информация о часовом поясе не сохраняется после перезагрузки. Вы можете проверить свои настройки с

diff -s /etc/localtime /usr/share/zoneinfo/`cat /etc/timezone`

Если вы обновляете только /etc/timezone , обновление не будет соответствовать /etc/localtime , поэтому лучше выполнить

tzconfig

Используйте tzselect чтобы узнать, какие часовые пояса действительно существуют (или просто просмотрите каталог /usr/share/zoneinfo ).

В системах POSIX TZ должен иметь приоритет перед /etc/localtime:

export TZ='Europe/Berlin'
$ date
Tue Apr 10 08:51:03 CEST 2018
export TZ='Pacific/Efate'
$ date
Tue Apr 10 18:28:33 +11 2018

Непосредственное использование TZ позволяет сэкономить многие системные вызовы, поскольку часто используемые функции, связанные с датой и временем, должны обращаться к файловой системе каждый раз, когда какая-либо программа запрашивает текущую дату. Это микрооптимизация, но довольно простая.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .