Làm cách nào chúng ta có thể tự động đặt múi giờ mặc định của hệ thống trong Linux bằng Internet? Theo tôi thấy, các máy chủ NTP chỉ có thể cập nhật thời gian chứ không thể cập nhật múi giờ. Có máy chủ nào có thể thay đổi múi giờ không?
Làm cách nào chúng ta có thể tự động đặt múi giờ mặc định của hệ thống trong Linux bằng Internet? Theo tôi thấy, các máy chủ NTP chỉ có thể cập nhật thời gian chứ không thể cập nhật múi giờ. Có máy chủ nào có thể thay đổi múi giờ không?
Câu trả lời:
Tôi đã viết một chương trình trước đây thực hiện điều này: tzupdate .
Bạn có thể thấy những gì nó sẽ đặt múi giờ của bạn thành (mà không thực sự thiết lập nó) bằng cách chạy tzupdate -p
:
$ tzupdate -p
Europe/Malta
Bạn có thể thiết lập nó thực sự bằng cách chạy tzupdate
như root.
$ sudo tzupdate
Europe/Malta
$ date
Thu 12 Sep 05:52:22 CEST 2013
Điều này hoạt động bởi:
/etc/localtime
để trỏ đến tệp zoneinfo cho múi giờ đóĐây là một chủ đề cũ, nhưng vẫn phù hợp với kubfox 1710 không tự động thay đổi múi giờ. Tôi đang sử dụng giải pháp của Chris Down cho tzupdate, nhưng cũng đảm bảo rằng nó sẽ được kích hoạt khi hệ thống cố gắng kết nối với mạng (wifi hoặc mạng khác). Điều này giả định rằng bạn đang sử dụng Trình quản lý mạng.
Mở một thiết bị đầu cuối trước.
Cài đặt tzupdate
sudo apt install python-pip
pip install -U tzupdate
Sau đó, đảm bảo rằng tất cả người dùng có thể truy cập được
sudo cp -R ~/.local/lib/python2.7/site-packages/. /usr/lib/python2.7/.
sudo cp /home/marta_riba/.local/bin/tzupdate /usr/local/bin/tzupdate
Kiểm tra xem nó hoạt động
sudo tzupdate
Sau đó, chúng tôi cần phải làm là đảm bảo rằng tất cả người dùng có thể truy cập được
sudo su -
tzupdate
trong đó thả bạn vào quyền root và sau đó kiểm tra xem lệnh có thay đổi múi giờ của bạn không. Sau đó, đảm bảo bạn thoát để trở lại như người dùng bình thường
exit
Hãy chắc chắn rằng tzupdate có thể được chạy bằng sudo mà không cần mật khẩu. Điều này là cần thiết cho bước sau này khi chúng tôi kích hoạt điều này từ người quản trị mạng chạy cái này trong nền. Nhập cái này vào một thiết bị đầu cuối để chỉnh sửa tệp sudoers
sudo visudo
Thêm dòng này vào cuối tập tin
ALL ALL=(root) NOPASSWD: /usr/local/bin/tzupdate
Nhấn CTRL-X và sau đó nhấn Y và sau đó ENTER để lưu các thay đổi
Sau đó, chúng tôi đảm bảo rằng Trình quản lý mạng luôn gọi điều này sau khi kích hoạt thay đổi kết nối mạng (ví dụ: khi kết nối với wifi). Để làm điều này, chúng ta tạo một tệp có tên là tzupdate trong thư mục distatcher.d chỉ đơn giản gọi sudo tzupdate. Các tập tin cần quyền thực thi để chạy
echo 'sudo tzupdate'| sudo tee /etc/NetworkManager/dispatcher.d/99-tzupdate
sudo chmod +x /etc/NetworkManager/dispatcher.d/99-tzupdate
Lưu ý rằng NetworkManager sẽ gọi thực thi sudo (tức là sudo tzupdate) thường sẽ nhắc nhập mật khẩu.
Có thể có một cách tốt hơn để làm điều này, ví dụ như yêu cầu NetworkManager gọi cuộc gọi này chỉ khi nó mang kết nối lên và không tắt (như cách trên sẽ làm) - Tôi đã thử đặt tập lệnh vào / etc / network / if-up .d nhưng điều này đã không làm việc cho tôi
Để kiểm tra điều này trong Kubfox - Thay đổi múi giờ địa phương của bạn thành một thứ khác (Chuyển đến plasmoid ngày trong thanh tác vụ của bạn và nhấp chuột phải và chọn 'Điều chỉnh ngày / giờ' và sau đó 'TimeZone' từ tab)
Tắt wifi và bật lại - bạn sẽ thấy rằng một khi nó kết nối với wifi, nó dường như đợi khoảng 30 giây và sau đó sẽ thay đổi múi giờ của bạn thành công.
Lưu ý rằng điều này chưa được kiểm tra với wifi khi người ta cần nhập mật khẩu trên trang web. Hy vọng rằng việc này chạy ở cuối kết nối mạng sẽ cung cấp đủ thời gian để người dùng nhập thông tin đăng nhập - nếu không, điều này có thể cần điều chỉnh thêm (kiểm tra xem có kết nối nào không, kiểm tra xem bạn có thể kết nối với internet không, đợi trong X giây nếu không thể kết nối với internet và sau đó thử lại Y lần
Không rõ ý của bạn là "cập nhật múi giờ".
Unix và Linux giữ thời gian là số giây kể từ ngày 1 tháng 1 năm 1970, 00:00 UTC. Đồng hồ hệ thống Unix do đó độc lập múi giờ. Các múi giờ không tồn tại trong nhân Linux; chỉ khi ứng dụng không gian người dùng hiển thị thời gian mà số giây kể từ năm 1970 được diễn giải bằng múi giờ. Thông thường, việc giải thích này được thực hiện thông qua các chức năng thư viện C. Múi giờ được chọn bởi TZ
biến môi trường. Các định nghĩa múi giờ (bao gồm tên múi giờ, được bù từ UTC, ngày khi thời gian tiết kiệm ánh sáng ban ngày có hiệu lực và các độ lệch trong DST) là một phần của GNU libc và thường được bao gồm trong các bản phân phối Linux dưới dạng gói "tzdata". Do đó, việc cập nhật các định nghĩa múi giờ là một vấn đề chạy apt-get upgrade
, yum update
hoặc một số hoạt động tương tự.
Lưu ý rằng một số phần mềm, chẳng hạn như Java, có các tệp định nghĩa múi giờ riêng, phải được cập nhật riêng.
NTP theo dõi số giây kể từ ngày 1 tháng 1 năm 1900, UTC . Do đó, NTP, giống như nhân Unix, không có khái niệm về múi giờ.