Linux timedatectl
lệnh cho phép bạn đặt thời gian, ngày tháng và múi giờ cho đồng hồ hệ thống và đồng hồ thời gian thực của bạn. Hãy dành một chút thời gian và chúng tôi sẽ chỉ cho bạn cách hoạt động của tất cả.
Tất cả đều là tương đối
Việc xử lý thời gian của máy tính là một trong những điều mà bạn có thể mong đợi là khá đơn giản. Ít nhất, cho đến khi bạn bắt đầu xem xét nó.
Đồng hồ hệ thống Linux đếm số giây kể từ kỷ nguyên Unix. Đây là lúc 00:00:00 ngày 1 tháng 1 năm 1970, giờ UTC. UTC là viết tắt của giờ quốc tế được điều phối nhưng nó thường được gọi là giờ quốc tế phối hợp hoặc chỉ giờ quốc tế. Đây là tiêu chuẩn thời gian mà thế giới quản lý và điều chỉnh thời gian. Các múi giờ khác nhau áp dụng độ lệch cho UTC để lấy giờ địa phương của chúng. Một số múi giờ đi trước UTC và những múi giờ khác đứng sau nó.
Đồng hồ hệ thống trong máy tính Linux dựa trên phần mềm. Rõ ràng là nó không thể chạy khi máy tính bị tắt nguồn. Một đồng hồ khác, đồng hồ thời gian thực dựa trên phần cứng được hỗ trợ bằng pin, có thể chạy khi máy tính tắt. Mục đích của nó là cho đồng hồ hệ thống biết thời gian của nó bất cứ khi nào Linux khởi động. Trừ khi có thể truy cập vào máy chủ giao thức thời gian mạng (NTP).
Máy chủ NTP là máy chủ cung cấp thông tin thời gian chính xác cho các máy tính yêu cầu. Nếu bạn khởi động máy tính hoặc máy tính xách tay của mình và không có truy cập internet — hoặc nó chưa được định cấu hình để sử dụng máy chủ NTP — đồng hồ thời gian thực được sử dụng để làm đồng hồ hệ thống thay vì Máy chủ NTP.
Đồng hồ hệ thống luôn ở trạng thái UTC. Bất kỳ ứng dụng nào cần lấy giờ địa phương cần phải:
- Truy cập đồng hồ hệ thống và lấy UTC
- Biết múi giờ đó ở múi giờ nào và áp dụng độ lệch chính xác
- Cân nhắc xem giờ tiết kiệm ánh sáng ban ngày có hiệu lực hay không
Việc chuyển đổi từ UTC sang giờ địa phương được thực hiện bởi ứng dụng, không phải đồng hồ hệ thống. Hay, chính xác hơn, việc chuyển đổi được thực hiện bởi các thư viện ngày và giờ mà ứng dụng được liên kết đến. Đó là lý do tại sao máy tính của bạn phải biết múi giờ đó là múi giờ nào, giờ UTC là bao nhiêu, bao nhiêu giây đã trôi qua kể từ kỷ nguyên Unix và liệu giờ tiết kiệm ánh sáng ban ngày có còn hiệu lực hay không.
Trên các bản phân phối Linux dựa trên systemd, chúng tôi sử dụng timedatectl
lệnh để xem hoặc thay đổi các cài đặt và giá trị đó.
Bắt đầu với Timmedatectl
Để xem dữ liệu hiện tại và thời gian cũng như các giá trị khác, hãy sử dụng timedatectl
lệnh với status
nhà điều hành.
timedatectl status
Trên thực tế, bạn có thể loại bỏ trạng thái và bạn sẽ vẫn nhận được kết quả tương tự.
timedatectl
Cả hai bộ đầu ra đều hiển thị:
- Giờ địa phương: Thời gian máy tính cho rằng đó là thời gian, theo múi giờ của nó.
- Giờ quốc tế: Giờ UTC.
- Giờ RTC: Thời gian đồng hồ thời gian thực đang sử dụng. Thông thường, đây là UTC.
- Múi giờ: Thông tin liên quan đến múi giờ đã định cấu hình.
- Đồng hồ hệ thống được đồng bộ hóa: Đồng hồ hệ thống có được đồng bộ hóa với máy chủ NTP hay không.
- Dịch vụ NTP: Dịch vụ NTP của máy tính có đang hoạt động hay không.
- RTC bằng TZ địa phương: Đồng hồ thời gian thực có đang sử dụng giờ địa phương thay vì UTC hay không.
Bạn có thể xem có bao nhiêu múi giờ timedatectl
hỗ trợ lệnh bằng cách gõ:
timedatectl list-timezones | wc -l
Đó là cách nhiều hơn những múi giờ trên thế giới. Nếu chúng ta chuyển đầu ra vào grep
và lọc ra các mục nhập cho “Châu Mỹ” và đưa nó vào less
chúng ta có thể cuộn qua một danh sách dễ quản lý hơn.
timedatectl list-timezones | grep "America/" | less
Khi bạn xem lại danh sách đó, bạn sẽ thấy “Mỹ” được hiểu theo nghĩa rộng nhất có thể của nó. Điều thứ hai bạn sẽ nhận thấy là hầu hết các mục nhập không phải là múi giờ thực tế.
Đặt múi giờ
Nếu bạn xem qua danh sách múi giờ chưa được lọc được hỗ trợ bởi timedatectl
bạn sẽ thấy các địa điểm cũng như múi giờ. Để đặt múi giờ, bạn có thể chỉ định múi giờ theo tên như EST hoặc GMT hoặc bạn có thể chọn một vị trí ở cùng múi giờ với bạn, chẳng hạn như London hoặc New York.
Đặt lại múi giờ không phải là việc bạn sẽ làm thường xuyên, nhưng có lẽ bạn đã chuyển nhà hoặc đi làm xa một thời gian và muốn bản địa hóa máy tính xách tay của mình. Nếu bạn cần đặt lại múi giờ của mình, hãy chọn một vị trí trong múi giờ bạn muốn sử dụng.
Chúng tôi sẽ đặt máy tính này thành giờ miền núi, có cùng múi giờ với Edmonton. Sau đó, chúng tôi sẽ xem cài đặt đã thay đổi như thế nào.
timedatectl set-timezone "America/Edmonton"
timedatectl
Múi giờ của chúng tôi đã được thay đổi, giờ địa phương của chúng tôi đã thay đổi và chênh lệch của chúng tôi so với UTC đã tăng lên.
Đặt ngày giờ theo cách thủ công
Mặc dù có thể đặt ngày giờ theo cách thủ công, nhưng thông thường bạn sẽ không cần phải làm như vậy. Sử dụng đồng bộ hóa thời gian và NTP là cách ưu tiên để giữ cho ngày và giờ trên máy tính của bạn chính xác. Nếu bạn cố gắng thay đổi ngày hoặc giờ trên máy tính của mình, bạn có thể gặp lỗi, cho bạn biết rằng đồng bộ hóa thời gian đang được sử dụng.
timedatectl set-time 10:30:00
Sử dụng lệnh này để tắt dịch vụ đồng bộ hóa thời gian:
sudo systemctl stop systemd-timesyncd.service
Bạn có thể đặt thời gian, ngày tháng hoặc cả hai bằng cách sử dụng timedatectl
toán tử set-time. ngày tháng theo thứ tự năm-tháng-ngày YYY-MM-DD và thời gian theo thứ tự giờ-phút-giây HH: MM: SS. Chúng ta sẽ đặt ngày giờ bằng lệnh này:
timedatectl set-time "2022-01-30 10:30:00"
Sau đó, chúng tôi sẽ kiểm tra xem các thay đổi đã diễn ra chưa, bằng cách sử dụng timedatectl
.
timedatectl
Ngày và giờ đã thay đổi. Ngoài ra, hãy lưu ý rằng máy tính đang sử dụng thời gian UTC sai. Chúng tôi cũng được thông báo rằng đồng hồ hệ thống không được đồng bộ hóa và dịch vụ NTP không hoạt động.
Nếu bạn có quyền truy cập internet, ngay sau khi bạn khôi phục dịch vụ đồng bộ hóa thời gian, thời gian sẽ được truy xuất và tất cả các chi tiết được đặt lại chính xác.
sudo systemctl start systemd-timesyncd.service
timedatectl
RTC: UTC hay LTZ?
Bạn có thể đặt đồng hồ thời gian thực thành múi giờ địa phương của mình thay vì đặt thành UTC — có thể, nhưng không thể xác định được. Nếu bạn thực hiện thay đổi, bạn sẽ thấy cảnh báo về những ảnh hưởng nghiêm trọng mà điều này có thể gây ra đối với hệ thống của bạn trong tương lai.
Lý do hiển thị cho bạn phương pháp này là bạn có thể gặp phải một máy mà chúng đang gặp vấn đề lạ với cài đặt thời gian của chúng. Đây là cách đặt đồng hồ thời gian thực trở lại UTC.
Trước tiên, chúng tôi cần đặt nó thành múi giờ địa phương.
timedatectl set-local-rtc 1
Sau đó, chúng tôi sẽ hỏi timedatectl
cho trạng thái của nó.
timedatectl
Tôi nghĩ họ đã nói rõ cảm xúc của mình.
Để khôi phục đồng hồ thời gian thực về UTC, hãy sử dụng lệnh sau:
timedatectl set-local-rtc 0
Chấp nhận nó và quên nó đi
Trừ khi bạn mắc lỗi trong quá trình cài đặt bản phân phối Linux của mình hoặc bạn chuyển địa điểm, thường thì không có lý do gì để sửa đổi cài đặt của hệ thống và đồng hồ thời gian thực.
Đặt đồng hồ hệ thống thành múi giờ của bạn, đồng hồ thời gian thực thành UTC và đảm bảo rằng hệ thống của bạn đang thăm dò máy chủ giao thức thời gian mạng. Đó là trạng thái mặc định sau hầu hết các cài đặt.
Nếu tất cả chúng được thiết lập, hệ thống thời gian trên máy tính của bạn sẽ tự xử lý.