Ответы:
Инструмент, который я нашел более простым в использовании dpkg-reconfigure
. Использование:
sudo dpkg-reconfigure tzdata
Вам будет предоставлено множество вариантов, включая те, которые не включены в tzselect
.
Это, вероятно, немного поздно для OP, и больше предназначено для других искателей, которые приезжают сюда.
Если вам нужно неинтерактивное решение, попробуйте это решение с помощью изменения часового пояса с помощью dpkg-reconfigure tzdata и debconf-set-selections
echo "Europe/Zurich" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Вы можете выяснить свой часовой пояс, покопавшись в / usr / share / zoneinfo. Фактически вышеприведенная команда dpkg-reconfigure копирует соответствующий файл в / etc / localtime. Раньше я просто делал это вручную, и, кажется, работает нормально.
Не удивляйтесь, если долго запущенные процессы не воспримут изменения. например, всплывают метки времени регистрации Apache. Подумайте, имеет ли это значение, и, следовательно, нужно ли вам перезапустить запущенные процессы или даже перезагрузить компьютер.
/etc/localtime
еще не существует. Если он существует и является мягкой ссылкой /usr/share/zoneinfo/whatever
, он берется за основу и /etc/localtime
обновляется соответствующим образом, перезаписывая ваши изменения.
Чтобы редактировать его не в интерактивном режиме в последних версиях Debian и Ubuntu (Stretch / Xenial и т. Д.), Его также необходимо удалить /etc/localtime
, в противном случае оно /etc/timezone
будет перезаписано.
echo 'Europe/Zurich' > /etc/timezone
rm /etc/localtime
dpkg-reconfigure -f noninteractive tzdata
Этот ответ основан на ответе mc0e. Я не могу добавить комментарий с моей репутацией.
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
может сэкономить вам много системных вызовов, поскольку часто используемые функции, связанные с датой и временем, должны обращаться к файловой системе каждый раз, когда какая-либо программа запрашивает текущую дату. Это микрооптимизация, но довольно простая.
TZ
в вашем профиле создает символическую ссылку? Это не звучит правдоподобно на моем опыте. Возможно, вы имели в виду «Также обязательно создайте символическую ссылку ...»?
$TZ
переменная считывается glibc
функциями: gnu.org/software/libc/manual/html_node/TZ-Variable.html
echo "TZ=Etc/UTC" >> /etc/environment
? вы упускаете TZ=
часть ... (если кто-то все еще использует древние версии Debian). Кроме того, неинтерактивные вещи, такие как демоны, все равно будут использовать /etc/localtime
версию вместо одного набора в TZ
...