Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách đặt thời gian, ngày tháng, múi giờ, đồng bộ hóa thời gian với máy chủ NTP và khắc phục các sự cố điển hình trong CentOS Linux.
Có hai loại đồng hồ trên máy chủ: phần cứng một (đồng hồ thời gian thực) đang hoạt động ngay cả khi máy chủ tắt và hệ điều hành phần mềm cái đồng hồ. Thời gian trên các đồng hồ này có thể khác nhau. Sau khi khởi động hệ điều hành, đồng hồ phần mềm dựa trên phần cứng và có thể được điều chỉnh bởi hệ điều hành.
Hầu hết các ứng dụng sử dụng đồng hồ phần mềm trong hoạt động của chúng.
Hwclock:Cấu hình thời gian phần cứng
Hwclock được sử dụng để kiểm tra thời gian phần cứng trong Linux:
-
hwclock --localtime
- kiểm tra thời gian phần cứng mà không cần chỉnh sửa -
hwclock --utc
- hiển thị thời gian nếu đồng hồ phần cứng hiển thị thời gian UTC
# hwclock --localtime
2020-10-12 06:12:02.912866-04:00
# hwclock --utc
2020-10-12 02:12:18.915319-04:00
Để đặt thời gian phần cứng theo thời gian hệ thống, hãy chạy lệnh sau:
# hwclock --systohc
Để đặt thời gian phần cứng bạn muốn, hãy chạy như sau:
# hwclock --set --date "11 Oct 2020 17:30"
Cấu hình thời gian thủ công trong CentOS
Trong Linux, ngày hoặc hẹn giờ các công cụ được sử dụng để kiểm tra và thiết lập thời gian phần mềm. Nếu bạn gọi đến ngày mà không có bất kỳ thông số nào, nó sẽ hiển thị thời gian hiện tại trên máy chủ của bạn:
# date
Sun Oct 11 22:14:54 EDT 2020
Nếu bạn muốn đặt thời gian theo cách thủ công, bạn có thể sử dụng ngày với các tham số bổ sung:
# date MMDDhhmm
Ví dụ:
# date 10261740
Để nhận thông tin mở rộng về ngày, giờ, múi giờ, cài đặt đồng bộ hóa, cài đặt giờ tiết kiệm ánh sáng ban ngày (DST), tính giờ Được sử dụng. Nó cung cấp thông tin chi tiết hơn về cài đặt thời gian trên máy chủ.
Timedatectl cũng cho phép thay đổi thời gian:
# timedatectl set-time '2020-10-11 17:51:00'
Cách đặt TimeZone trong CentOS?
Để đặt thời gian theo múi giờ của bạn trên CentOS Linux, bạn có thể thay đổi nó theo cách thủ công. Để làm điều đó, bạn có thể sử dụng hai công cụ:
- định thời gian
- tzdata
Để thay đổi múi giờ bằng cách sử dụng timedatectl , chạy lệnh này:
# timedatectl set-timezone Canada/Pacific
# date
Hoặc bạn có thể sử dụng tzdata . Để sử dụng phương pháp này, hãy thay thế tệp / etc / localtime với một trong những bạn cần. Toàn bộ danh sách múi giờ nằm ở /usr/share/zoneinfo/
danh mục. Hãy thay đổi múi giờ thành Canada / Thái Bình Dương . Sao lưu tệp vị trí hiện tại:
# mv /etc/localtime /etc/localtime.bak
Tạo liên kết biểu tượng cho múi giờ bạn muốn đặt:
# ln -s /usr/share/zoneinfo/Canada/Pacific /etc/localtime
Định cấu hình CentOS để Đồng bộ hóa Thời gian với Máy chủ Thời gian NTP
Bạn có thể định cấu hình đồng bộ hóa thời gian tự động trên máy chủ của mình với máy chủ NTP (Giao thức thời gian mạng) bên ngoài. Để thực hiện, bạn phải cài đặt dịch vụ ntp . Ví dụ:bạn có thể cài đặt nó bằng yum trong CentOS 7:
# yum install ntp -y
Sau khi cài đặt, hãy khởi động dịch vụ ntpd và thêm nó vào khởi động:
# systemctl start ntpd.service
# systemctl enable ntpd.service
Đảm bảo rằng dịch vụ đang chạy:
# service ntpd status
Redirecting to /bin/systemctl status ntpd.service ● ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2020-10-11 15:37:33 +06; 5min ago Main PID: 3057 (ntpd) CGroup: /system.slice/ntpd.service └─3057 /usr/sbin/ntpd -u ntp:ntp -g
Chỉ định máy chủ NTP để đồng bộ hóa thời gian với trong / etc/ntp.conf :
server 0.pool.ntp.org server 1.pool.ntp.org server 2.pool.ntp.org
Lần lượt được đồng bộ thời gian. Nếu máy chủ NTP đầu tiên không khả dụng, máy chủ thứ hai sẽ được sử dụng, v.v.
Bạn có thể đồng bộ hóa thời gian với máy chủ NTP được chỉ định theo cách thủ công bằng lệnh này:
# ntpdate 192.168.1.23
Theo mặc định, ntpd bật “chế độ 11 phút”. Có nghĩa là thời gian sẽ được đồng bộ sau mỗi 11 phút. Nếu bạn không thể sử dụng ntpd daemon, bạn có thể cấu hình đồng bộ hóa thời gian bằng cron. Thêm lệnh sau vào cron:
# ntpdate pool.ntp.org
Làm cách nào để Đồng bộ hóa Thời gian trong CentOS 8 bằng Chronyd?
Trong CentOS 8, bạn sẽ phải sử dụng chrony để đồng bộ hóa thời gian, vì ntp và ntpdate đã bị xóa khỏi kho lưu trữ chính thức .
Những lợi ích chính của chrony là:
- Đồng bộ hóa thời gian có tốc độ và độ chính xác cao;
- Hoạt động tốt nếu bạn không có quyền truy cập vào đồng hồ chính (ntpd yêu cầu các yêu cầu thường xuyên);
- Theo mặc định, thời gian không được sửa đổi ngay sau khi đồng bộ hóa để tránh bất kỳ sự cố nào đối với các chương trình đang chạy;
- Sử dụng ít tài nguyên hơn.
Theo mặc định, chrony đã được cài đặt trong CentOS Linux, nhưng nếu bạn không có vì lý do nào đó, hãy cài đặt nó:
# dnf install chrony
Giống như bất kỳ dịch vụ nào khác, chrony cần được khởi động và thêm vào khởi động sau khi cài đặt:
# systemctl start chronyd
# systemctl enable chronyd
Kiểm tra trạng thái dịch vụ chronyd:
# systemctl status chronyd
Để đảm bảo rằng đồng bộ hóa thời gian đang hoạt động, hãy chạy lệnh sau:
# timedatectl status
NTP Service: active
Tệp cấu hình Chrony là /etc/chrony.conf . Chỉ định danh sách máy chủ NTP bạn muốn sử dụng để đồng bộ hóa. Thích ntp , chrony có giao diện dòng lệnh: chronyc . Để xem thông tin về các tùy chọn đồng bộ hóa thời gian hiện tại, hãy chạy lệnh sau:
# chronyc tracking
Để xem thông tin về máy chủ đồng bộ hóa:
# chronyc sources
Nếu bạn muốn đặt ngày và giờ cụ thể theo cách thủ công, bạn có thể sử dụng date , nhưng trước đó đã vô hiệu hóa chronyd daemon.
Các vấn đề về đồng bộ thời gian thường gặp trong CentOS
Trong phần này, tôi sẽ mô tả các lỗi điển hình xuất hiện khi làm việc với timedatectl , ntp .
Trong quá trình đồng bộ hóa thời gian thủ công, bạn có thể gặp lỗi này:
# ntpdate pool.ntp.org
ntpdate [26214]: the NTP socket is in use, exiting
Điều này có nghĩa là ntpd daemon đang chạy và ngăn đồng bộ hóa thời gian thủ công. Để đồng bộ hóa thời gian theo cách thủ công, hãy dừng trình nền ntpd:
# service ntpd stop
Và chạy lại đồng bộ hóa.
Lỗi tương tự có thể xảy ra khi làm việc với timedatectl:
Failed to set time: Automatic time synchronization is enabled.
Bạn phải tắt đồng bộ hóa tự động trong hẹn giờ:
# timedatectl set-ntp 0
Và chạy lệnh này để đặt ngày giờ bạn muốn:
# timedatectl set-time '2020-11-12 17:41:00'
Khi làm việc với múi giờ, có thể xảy ra trường hợp chúng không được cài đặt trên máy chủ của bạn và bạn không thể tạo liên kết biểu tượng cho thời gian cục bộ. Để cung cấp múi giờ trên máy chủ của bạn, hãy cài đặt công cụ tzdata:
# yum install tzdata -y
Ngoài ra, bạn có thể gặp một số lỗi trong quá trình đồng bộ hóa thủ công như lỗi sau:
11 Oct 21:11:19 ntpdate[897482]: sendto(xx.xx.xx.98): Operation not permitted
Trong trường hợp này, hãy kiểm tra các quy tắc firewalld / iptables của bạn và đảm bảo rằng Cổng UDP 123 đang mở trên máy chủ của bạn. Ngoài ra, một số máy chủ NTP có thể không khả dụng trong quá trình xác thực.