Відповіді:
Інструмент, який я виявив більш простим у використанні, - це dpkg-reconfigure
. Використання:
sudo dpkg-reconfigure tzdata
Вам буде надано безліч варіантів, включаючи деякі, які не включені до tzselect
.
Це, мабуть, трохи пізно для ОП, і більше призначене для інших шукачів, які приїжджають сюди.
Якщо вам потрібно неінтерактивне рішення, спробуйте це рішення змінити часовий пояс за допомогою dpkg-переналаштування tzdata та debconf-set-select
echo "Europe/Zurich" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
Ви можете визначити свій часовий пояс, заглянувши в / usr / share / zoneinfo. Фактично команда dpkg-перенастроювання вище копіює відповідний файл звідти в / 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
...