Làm cách nào để đặt lại vĩnh viễn múi giờ trong Debian?


29

Dreamhost dường như nghĩ rằng chúng tôi thích PDT, mặc dù đang ở vùng Trung Tây. Làm cách nào để thay đổi múi giờ?

Câu trả lời:


73

Một công cụ tôi thấy dễ sử dụng hơn dpkg-reconfigure. Sử dụng:

sudo dpkg-reconfigure tzdata

Bạn sẽ được cung cấp vô số lựa chọn, bao gồm một số không được bao gồm trong tzselect.


Một lợi ích của việc làm theo cách này là bạn đang thực hiện nó theo cách có thể lặp lại và hạn chế các cơ hội làm điều gì đó sai như đưa vào múi giờ không tồn tại.
Mogget

1
Đây là công cụ tốt, nhưng nếu bạn cần một tùy chọn không tương tác (và do đó có thể viết kịch bản), hãy xem câu trả lời của tôi dưới đây.
mc0e

14

Điều này có lẽ hơi muộn đối với OP và dành cho những người tìm kiếm khác đến đây.

Nếu bạn cần một giải pháp không tương tác, hãy thử giải pháp này từ việc thay đổi múi giờ với dpkg-cấu hình lại tzdata và debconf-set-select

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

Bạn có thể tìm ra múi giờ của mình bằng cách chọc vào / usr / share / zoneinfo. Trong thực tế, lệnh dpkg-cấu hình lại ở trên sao chép tệp thích hợp từ đó sang / etc / localtime. Tôi đã từng làm điều đó bằng tay, và nó dường như hoạt động tốt.

Đừng quá ngạc nhiên nếu các quy trình chạy dài không nhận được sự thay đổi. ví dụ: dấu thời gian nhật ký Apache xuất hiện trong tâm trí. Xem xét liệu điều đó có quan trọng không, và do đó bạn có cần khởi động lại các tiến trình đang chạy hay thậm chí khởi động lại.


3
Coi chừng việc này hoạt động, đó là một yêu cầu /etc/localtimechưa tồn tại. Nếu nó tồn tại và là một liên kết mềm /usr/share/zoneinfo/whatever, nó được coi là cơ sở và nó /etc/localtimeđược cập nhật tương ứng, ghi đè lên các thay đổi của bạn.
Multisync

11

Để chỉnh sửa nó không tương tác trên các phiên bản Debian và Ubuntu gần đây (Stretch / Xenial, v.v.), bạn cũng cần phải xóa /etc/localtime, nếu không /etc/timezonesẽ bị ghi đè.

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

Câu trả lời này dựa trên câu trả lời của mc0e. Tôi không thể thêm một bình luận với danh tiếng của tôi.


3

TL; DR

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

nơi Etc/UTClà múi giờ ưa thích của bạn, bạn tìm thấy sử dụng tzselect.

Phiên bản dài hơn

Khi bạn đang sử dụng

dpkg-reconfigure tzdata

thông tin múi giờ không được lưu giữ sau khi khởi động lại. Bạn có thể xác minh cài đặt của mình với

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

Nếu bạn chỉ cập nhật /etc/timezone, bản cập nhật sẽ không phù hợp /etc/localtime, do đó tốt hơn là thực thi

tzconfig

Sử dụng tzselectđể tìm ra múi giờ thực sự tồn tại (hoặc đơn giản là duyệt /usr/share/zoneinfothư mục).

Trong các hệ thống POSIX, TZnên được ưu tiên trước /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

Sử dụng trực tiếp TZ có thể giúp bạn tiết kiệm nhiều cuộc gọi hệ thống vì các chức năng liên quan đến ngày / giờ được sử dụng thường xuyên phải truy cập hệ thống tệp mỗi khi một số chương trình yêu cầu ngày hiện tại. Đó là một tối ưu hóa vi mô, nhưng khá đơn giản.


Bạn có xuất tích cực TZtrong tệp hồ sơ của bạn tạo ra một liên kết tượng trưng? Điều đó không đúng chút nào trong kinh nghiệm của tôi. Có lẽ bạn có nghĩa là "Cũng đảm bảo tạo liên kết tượng trưng ..."?
amn

1
@amn Không, điều đó sẽ không tạo ra một liên kết tượng trưng, ​​tôi đã cố gắng làm rõ điều đó. Nhưng $TZbiến được đọc bởi các glibchàm: gnu.org/software/libc/manual/html_node/TZ-Variable.html
Tombart

không nên nó được echo "TZ=Etc/UTC" >> /etc/environment? bạn đang thiếu TZ=một phần ... (nếu trường hợp ai đó vẫn đang chạy các phiên bản debian cổ đại). Ngoài ra, những thứ không tương tác như daemon vẫn sẽ sử dụng /etc/localtimephiên bản thay vì một bộ trong TZ...
Matija Nalis

@MatijaNalis Vâng, bạn nói đúng. Cảm ơn đã sửa!
Tombart
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.