Як я назавжди скидаю часовий пояс у Debian?


29

Dreamhost, здається, вважає, що нам подобається PDT, незважаючи на те, що він знаходиться на Середньому Заході. Як змінити часовий пояс?

Відповіді:


73

Інструмент, який я виявив більш простим у використанні, - це dpkg-reconfigure. Використання:

sudo dpkg-reconfigure tzdata

Вам буде надано безліч варіантів, включаючи деякі, які не включені до tzselect.


Користь зробити це таким чином полягає в тому, що ви робите це відтворюваним чином і обмежуєте шанси зробити щось не так, як, наприклад, встановити часовий пояс, який не існує.
Могет

1
Це добре, але якщо вам потрібен неінтерактивний (а отже, сценарій) варіант, дивіться мою відповідь нижче.
mc0e

14

Це, мабуть, трохи пізно для ОП, і більше призначене для інших шукачів, які приїжджають сюди.

Якщо вам потрібно неінтерактивне рішення, спробуйте це рішення змінити часовий пояс за допомогою dpkg-переналаштування tzdata та debconf-set-select

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

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

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


3
Остерігайтеся, щоб для цього працювати, це вимога, яка /etc/localtimeще не існує. Якщо вона існує і є софтпосиланням /usr/share/zoneinfo/whatever, вона береться за основу, і вона /etc/localtimeвідповідно оновлюється, замінюючи зміни.
Multisync

11

Щоб редагувати його неінтерактивно, на останніх версіях Debian та Ubuntu (Stretch / Xenial тощо), вам також потрібно видалити /etc/localtime, інакше /etc/timezoneбуде перезаписано.

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

Ця відповідь заснована на відповіді mc0e. Я не можу додати коментар зі своєю репутацією.


3

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у вашому файлі профілю, створюючи символьне посилання? Це на моєму досвіді це зовсім не правда. Можливо, ви мали на увазі "Також не забудьте створити символьне посилання ..."?
amn

1
@amn Ні, це не створить симпосилання, я намагався уточнити це. Але $TZзмінна читається за glibcфункціями: gnu.org/software/libc/manual/html_node/TZ-Variable.html
Tombart

чи не повинно бути echo "TZ=Etc/UTC" >> /etc/environment? ви пропускаєте TZ=частину ... (якщо у випадку, якщо хтось все ще працює давні версії debian). Крім того, неінтерактивні речі, як демони, все одно використовуватимуть /etc/localtimeверсію замість одного набору в TZ...
Matija Nalis

@MatijaNalis Так, ти маєш рацію. Дякуємо за виправлення!
Томбарт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.