Налаштування часового поясу в Linux [закрито]


157

Я встановлюю часовий пояс на GMT + 6 на своїй машині Linux, копіюючи файл zoneinfo в /etc/localtime, але dateкоманда все ще показує час як UTCtime-6. Чи може хтось пояснити мені таку поведінку?

Я припускаю, що dateкоманда повинна відображати UTCtime+6час. Ось наступні кроки:

date
Wed Jan 22 17:29:01 IST 2014

date -u
Wed Jan 22 11:59:01 UTC 2014

cp /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime

date
Wed Jan 22 05:59:21 GMT+6 2014

date -u
Wed Jan 22 11:59:01 UTC 2014

Чи встановлена ​​змінна середовище TZ (чи echo $TZстворює щось, окрім порожнього рядка)? Також може бути кращою ідеєю створити симпосилання на, /etc/localtimeа не копіювати власне файл (таким чином ви будете в безпеці, якщо дані зони info колись зміниться, що, швидше за все, ніколи не буде).
Самі Лайн

Що таке дистрибутив? Різні дистрибутиви вирішують це по-різному!
slm

@slm: Я використовую ubuntu 12.04
Рахул Добі

Ви, ймовірно, не знали цієї політики, але ви не плануєте розміщувати одні й ті ж запитання на різних веб-сайтах SE. stackoverflow.com/questions/21282367/timezone-setting-in-linux
slm

2
"Це питання було розміщено на декількох сайтах" Так, це для мене нове. Ніколи не стикався з веб-сайтом SE з такою близькою причиною. У всякому разі, це перше питання, яке виникає в Google при пошуку того, як змінити часовий пояс в Linux, і це найбільш високоголосне питання з усіх тих, що я бачив, тож, можливо, його слід знову відкрити?
Ajedi32

Відповіді:


272

Погляньте на цю публікацію в блозі під назвою: Як: 2 способи змінити TimeZone в Linux .

Дистрибуція Red Hat

Якщо ви використовуєте дистрибутив, такий як Red Hat, то ваш підхід до копіювання файлу був би в основному прийнятним.

ПРИМІТКА: Якщо ви шукаєте дистриб'юторське рішення, це також працює на Debian, хоча нижче є більш прості підходи, якщо вам потрібно мати справу з машинами Debian.

$ ls /usr/share/zoneinfo/
Africa/      CET          Etc/         Hongkong     Kwajalein    Pacific/     ROK          zone.tab
America/     Chile/       Europe/      HST          Libya        Poland       Singapore    Zulu
Antarctica/  CST6CDT      GB           Iceland      MET          Portugal     Turkey       
Arctic/      Cuba         GB-Eire      Indian/      Mexico/      posix/       UCT          
Asia/        EET          GMT          Iran         MST          posixrules   Universal    
Atlantic/    Egypt        GMT0         iso3166.tab  MST7MDT      PRC          US/          
Australia/   Eire         GMT-0        Israel       Navajo       PST8PDT      UTC          
Brazil/      EST          GMT+0        Jamaica      NZ           right/       WET          
Canada/      EST5EDT      Greenwich    Japan        NZ-CHAT      ROC          W-SU         

Я б рекомендував посилатися на нього, а не копіювати.

$ sudo unlink /etc/localtime 
$ sudo ln -s /usr/share/zoneinfo/Etc/GMT+6 /etc/localtime

Тепер дата показує різний часовий пояс:

$ date -u
Thu Jan 23 05:40:31 UTC 2014

$ date 
Wed Jan 22 23:40:38 GMT+6 2014

Ubuntu / Debian Distros

Для зміни часового поясу в будь-якому з цих дистрибутивів можна скористатися цією командою:

$ sudo dpkg-reconfigure tzdata

    ss №1

$ sudo dpkg-reconfigure tzdata

Current default time zone: 'Etc/GMT-6'
Local time is now:      Thu Jan 23 11:52:16 GMT-6 2014.
Universal Time is now:  Thu Jan 23 05:52:16 UTC 2014.

Тепер, коли ми перевіримо це:

$ date -u
Thu Jan 23 05:53:32 UTC 2014

$ date 
Thu Jan 23 11:53:33 GMT-6 2014

ПРИМІТКА. У Ubuntu 14.04 та новіших версій є також одна опція за допомогою однієї команди (джерело: Запитайте Ubuntu - встановлення часового поясу з терміналу ):

$ sudo timedatectl set-timezone Etc/GMT-6

Про використання "Etc / GMT + 6"

уривок з відповіді @ MattJohnson на ТАК

Зони на кшталт Etc/GMT+6навмисно відмінені для зворотної сумісності зі стандартами POSIX. Дивіться коментарі до цього файлу .

Вам майже ніколи не потрібно використовувати ці зони. Замість цього ви повинні використовувати в повній мірі з ім'ям часового поясу , як America/New_Yorkі Europe/Londonчи то , що підходить для вашого місця розташування. Зверніться до списку тут .


1
дивіться відповідь на це запитання тут stackoverflow.com/questions/21282367/timezone-setting-in-linux
Рахул Добі

@ user3184706 - тут ти начебто заплутався. Ваш Q тут полягав у тому, як змінити часовий пояс, на що я відповів. Трохи про використання часового поясу GMT .. чи ні про те, що наданий SO A є точним, але я знехтував включити це сюди, оскільки ви насправді про це не питали, хоч я думав. Я можу або додати цей біт до цього A, або ви можете скопіювати / вставити цю інформацію тут як власний А.
slm

@ user3184706 - щоб спробувати це очистити, я включив Метт А в шахту, щоб зробити його завершеним.
slm

1
Зауважте, що якщо ви знаходитесь в контейнері, з Ubuntu вам доведеться встановити пакет, tzdataінакше файли в /usr/share/zoneinfoньому не існуватимуть.
Забій Елліотта

1
timedatectlтакож працює для SLES 12.
Олександр Малахов

24

Ось так я це роблю в Ubuntu. Просто замініть Asia/Tokyoвласний часовий пояс.

echo 'Asia/Tokyo' | sudo tee /etc/timezone

sudo dpkg-reconfigure -f noninteractive tzdata

Існує помилка в tzdata: деякі значення отримують унормовано dpkg-reconfigure:

echo 'US/Central' >/etc/timezone
dpkg-reconfigure -f noninteractive tzdata
# Current default time zone: 'America/Chicago'

echo 'US/Eastern' >/etc/timezone
apt-get install --reinstall tzdata
# Current default time zone: 'America/New_York'

Це також працює, але в Debian / Ubuntu відповідь slm, ймовірно, простіша і менш ризикована (немає шансів на помилки)
Андреас Хартманн

17

команда tzselect зроблена для того, щоб робити те, що ви хочете.


1
І конденсувати це в єдиний рядок, який встановлює TZзмінну у ваш локальний часовий пояс - наприклад, для America / Los_Angeles - export TZ=`printf "2\n49\n21\n1\n" | tzselect 2>&1 | tail -1` . Ви можете помістити цей рядок у свій .profile , as tzselect`, який корисно пропонує вам запустити його під запитом.
саме
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.