Quản lý múi giờ và thời gian: lệnh timedatectl
1. Làm việc với thời gian trong Linux
Tại sao việc thiết lập thời gian đúng lại quan trọng?
Hãy tưởng tượng bạn đang cố gắng theo dõi lỗi trong nhật ký hệ thống, nhưng thời gian trong log không khớp với thời gian thực. Hoặc, tệ hơn, server của bạn trong một công ty quốc tế lại hiển thị thời gian khác nhau cho từng người dùng. Việc thiết lập thời gian đúng không chỉ là tiện lợi: nó cực kỳ quan trọng cho hoạt động của hệ thống, đồng bộ hóa tệp, đảm bảo an ninh (các chứng chỉ SSL phụ thuộc vào thời gian) và phối hợp các công việc.
Trong Linux, thời gian có thể được biểu diễn dưới hai dạng:
- Thời gian hệ thống (System Time) — đây là thời gian mà hệ điều hành sử dụng cho các tác vụ của mình.
- Thời gian phần cứng (Hardware Time) — được lưu trữ ở cấp phần cứng (BIOS/UEFI).
Chúng ta sẽ làm việc với thời gian hệ thống thông qua công cụ timedatectl.
2. Cơ bản về lệnh timedatectl
timedatectl — là một tiện ích dòng lệnh cung cấp giao diện dễ dàng để quản lý thời gian. Nó cho phép:
- Kiểm tra cấu hình hiện tại của thời gian và múi giờ;
- Thiết lập thời gian hệ thống và thời gian phần cứng;
- Cấu hình múi giờ;
- Bật và tắt đồng bộ thời gian với NTP (Network Time Protocol).
Kiểm tra thời gian hiện tại
Bắt đầu với việc đơn giản nhất. Để biết được thời gian và cấu hình hiện tại, hãy chạy lệnh:
timedatectl
Ví dụ kết quả:
Local time: Tue 2023-10-31 12:34:56 MSK
Universal time: Tue 2023-10-31 09:34:56 UTC
RTC time: Tue 2023-10-31 09:34:56
Time zone: Europe/Moscow (MSK, +0300)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Giải thích các trường:
- Local time: Thời gian cục bộ (hệ thống).
- Universal time: Thời gian ở định dạng UTC (thời gian phối hợp quốc tế).
- RTC time: Thời gian phần cứng (ở mức BIOS/UEFI).
- Time zone: Múi giờ hiện tại.
- System clock synchronized: Đồng hồ hệ thống có được đồng bộ qua NTP không.
- NTP service: Dịch vụ đồng bộ thời gian có đang hoạt động hay không.
- RTC in local TZ: Thời gian phần cứng có phù hợp với múi giờ cục bộ không.
Cấu hình và thay đổi múi giờ
Đôi khi, sau khi di chuyển hoặc do yêu cầu của dự án, bạn cần thay đổi múi giờ. Ví dụ, máy chủ của bạn được cấu hình cho New York, nhưng bây giờ nó phục vụ người dùng ở Moscow. Múi giờ có thể tìm thấy trong thư mục /usr/share/zoneinfo.
Để xem các múi giờ khả dụng, hãy chạy lệnh:
timedatectl list-timezones
Kết quả sẽ là một danh sách dài như:
Africa/Abidjan
America/New_York
Asia/Tokyo
Europe/Moscow
Để thiết lập múi giờ mới, dùng lệnh:
sudo timedatectl set-timezone Europe/Moscow
Kiểm tra xem múi giờ đã được thay đổi chưa:
timedatectl
Bài tập thực hành
- Tìm múi giờ hiện tại của máy chủ của bạn.
- Chuyển múi giờ sang UTC.
- Trả múi giờ lại về cục bộ của bạn.
3. Cài đặt thời gian thủ công
Mặc dù các máy chủ hiện đại thường đồng bộ hóa thời gian qua NTP, đôi khi cần thiết lập thời gian thủ công. Điều này hữu ích nếu máy chủ nằm trong mạng cô lập không có truy cập internet.
Đầu tiên, bạn có thể kiểm tra thời gian hệ thống hiện tại:
date
Bạn có thể cài đặt thời gian mới bằng lệnh sau:
sudo timedatectl set-time "YYYY-MM-DD HH:MM:SS"
Ví dụ: để đặt thời gian là ngày 1 tháng 11 năm 2023, 12:00:
sudo timedatectl set-time "2023-11-01 12:00:00"
Bây giờ, hãy kiểm tra kết quả một lần nữa:
timedatectl
Cài đặt thời gian phần cứng
Thời gian phần cứng (còn được gọi là RTC — Real-Time Clock) được quản lý ở cấp độ BIOS/UEFI. Nếu thời gian phần cứng không đồng bộ với thời gian hệ thống, điều này có thể gây ra sự cố khi khởi động lại. Để đồng bộ hóa, hãy thực hiện:
sudo hwclock --systohc
Lệnh này sẽ thiết lập thời gian phần cứng theo thời gian hệ thống.
Nếu bạn cần làm ngược lại (đồng bộ hóa thời gian hệ thống với thời gian phần cứng), hãy sử dụng:
sudo hwclock --hctosys
4. Đồng bộ thời gian qua NTP
Đồng bộ thời gian qua NTP là cách tự động duy trì thời gian chính xác bằng cách sử dụng các server từ xa. Trong hầu hết các bản phân phối Linux hiện đại, NTP được bật theo mặc định.
Kiểm tra cấu hình NTP
Thực hiện:
timedatectl status
Nếu NTP bị tắt (dòng NTP service hiển thị inactive), bật nó lên:
sudo timedatectl set-ntp true
Để tắt NTP, thực hiện:
sudo timedatectl set-ntp false
Nếu NTP không hoạt động, hãy xác minh rằng các dịch vụ liên quan đang hoạt động. Ví dụ, trên các hệ thống sử dụng systemd-timesyncd, hãy đảm bảo rằng dịch vụ đang hoạt động:
sudo systemctl status systemd-timesyncd
5. Bài tập thực hành
Bài tập
- Cài đặt múi giờ hệ thống của bạn thành UTC.
- Thủ công đặt thời gian hệ thống là 12:00:00, ngày 1 tháng 11 năm 2023.
- Bật đồng bộ thời gian qua NTP.
Kiểm tra
Sau khi hoàn thành bài tập, đảm bảo rằng:
- Thời gian hệ thống của bạn khớp với các tham số đã thiết lập.
- Múi giờ đã được đổi thành UTC.
- Dịch vụ NTP đang hoạt động.
6. Lỗi thường gặp và bẫy khó chịu
"RTC in local TZ: no" không khớp với múi giờ địa phương. Nhiều hệ thống thích sử dụng UTC cho thời gian phần cứng để tránh nhầm lẫn khi làm việc với các múi giờ khác nhau. Đây không phải là lỗi, mà là sự ưu tiên.
Lỗi quyền truy cập khi thay đổi thời gian. Lệnh
timedatectlyêu cầu quyền của superuser. Hãy đảm bảo rằng bạn sử dụngsudo.Không kích hoạt đồng bộ hóa NTP. Kiểm tra xem dịch vụ NTP trên máy chủ của bạn có hoạt động không. Ví dụ, đối với
systemd-timesyncd, hãy chạy lệnh sau:sudo systemctl start systemd-timesyncd
Tại sao điều này quan trọng trong thực tế?
- Quản trị máy chủ. Cấu hình thời gian và múi giờ rất quan trọng để đảm bảo nhật ký hoạt động chính xác, đồng bộ hóa dữ liệu và lập kế hoạch công việc.
- Làm việc với các dự án quốc tế. Sử dụng UTC như một tiêu chuẩn giúp tránh nhầm lẫn khi làm việc với khách hàng từ các múi giờ khác nhau.
- Phỏng vấn và chứng chỉ. Các câu hỏi về
timedatectlvà quản lý thời gian thường xuất hiện trong các bài kiểm tra và phỏng vấn cho các vị trí quản trị hệ thống.
Giờ đây, bạn đã sẵn sàng quản lý thời gian trong Linux, như cách bạn quản lý deadline của mình: tự tin, chính xác và không có bất ngờ không mong muốn.
GO TO FULL VERSION