Computer >> Máy Tính >  >> Hệ thống >> Linux

Cách đồng bộ hóa Thời gian Linux với Máy chủ NTP

Cách đồng bộ hóa Thời gian Linux với Máy chủ NTP

Đồng hồ máy tính không hoàn hảo. Trong vài ngày, vài tuần hoặc vài tháng, chúng sẽ trôi đi và ngừng hiển thị thời gian thực. Nói một cách đơn giản, sau khi trôi, họ có thể hiển thị đó là “10:30” trong khi thực tế đó là “10:33”. Thông thường trên các máy tính cũ thường điều chỉnh lại đồng hồ máy tính theo cách thủ công. Tuy nhiên, sau khi kết nối Internet trở nên phổ biến, các hệ điều hành hiện đại bắt đầu tự động điều chỉnh đồng hồ với sự trợ giúp của máy chủ NTP.

NTP là gì?

NTP là từ viết tắt của Network Time Protocol. Đây là một thuật toán được thiết kế để đồng bộ hóa đồng hồ máy tính thông qua các kết nối mạng và giữ cho chúng luôn chính xác.

Cách bật đồng bộ hóa thời gian trên Linux

May mắn thay, hầu hết các bản phân phối đều triển khai hình thức đồng bộ hóa thời gian này hay hình thức khác. Nếu bạn không bao giờ nhận thấy đồng hồ máy tính của mình lệch khỏi đồng hồ điện thoại, gần như chắc chắn bạn đã có một ứng dụng khách / daemon NTP đang chạy.

Trên hệ điều hành Linux với systemd

Phần lớn các bản phân phối Linux đã sử dụng systemd và đi kèm với nó là daemon “systemd-timesyncd”. Điều đó có nghĩa là bạn có một ứng dụng khách NTP đã được cài đặt sẵn trên Ubuntu, Debian, Fedora, Arch Linux, openSUSE, Manjaro và những người khác. Trên các bản phân phối này và các bản phân phối khác dựa trên chúng (ví dụ:Hệ điều hành cơ bản, Hệ điều hành Zorin), hãy chạy phần này để kiểm tra xem đồng bộ hóa NTP có được bật hay không:

timedatectl

Cách đồng bộ hóa Thời gian Linux với Máy chủ NTP

Nếu bạn thấy Network time on: yes trong đầu ra, sau đó đồng hồ máy tính của bạn được tự động điều chỉnh định kỳ thông qua NTP. Đôi khi bạn cũng có thể nhận thấy NTP synchronized: no điều này có thể có nghĩa là đồng hồ được đồng bộ hóa thông qua một số công cụ khác ngoài “systemd-timesyncd”. Điều đó cũng có thể có nghĩa là systemd-timesyncd chưa đồng bộ hóa nhưng sẽ làm như vậy sau.

Nếu bạn thấy Network time on: no , hãy chạy lệnh sau để bật đồng bộ hóa thời gian NTP.

sudo timedatectl set-ntp true

Đó là tất cả những gì bạn phải làm trên các bản phân phối này.

Trên hệ điều hành Linux không có systemd

Với việc MX Linux trở nên quá phổ biến gần đây, một ví dụ về hệ điều hành này có vẻ phù hợp để bắt đầu. Đó cũng là một trường hợp đặc biệt. Nó "loại" có systemd, nhưng nó "loại" thì không. timedatectl báo cáo rằng thời gian mạng "bật" nhưng systemd-timesyncd không được sử dụng.

Vậy nó đồng bộ như thế nào? Bạn có thể kiểm tra bằng lệnh tiếp theo mà bạn có thể sử dụng trên bất kỳ hệ điều hành Linux nào khác.

sudo cat /var/log/syslog | grep ntp

Trên MX Linux, bạn sẽ nhận được kết quả tương tự như những gì bạn thấy trong hình sau.

Cách đồng bộ hóa Thời gian Linux với Máy chủ NTP

Từ thông báo nhật ký đã lọc này, bạn có thể thấy rằng ứng dụng khách “ntpdate” đã chạy một lần. Đây là một ứng dụng khách phổ biến, được cài đặt theo mặc định trên nhiều bản phân phối Linux. Nó nhẹ và chỉ truy vấn các máy chủ NTP không thường xuyên. Nó không chạy trong nền và được kích hoạt bởi các tập lệnh, đồng bộ hóa, sau đó thoát ra.

Điều này có nghĩa là thời gian không được đồng bộ hóa với độ chính xác cực cao (nghĩ là mili giây hoặc micro giây), nhưng nó đủ chính xác cho hầu hết các mục đích. Nó thường chính xác, ít nhất là đến giây.

Trên các hệ điều hành khác, bạn có thể thấy “ntpd,” là một daemon, liên tục chạy trong nền và cực kỳ chính xác. Nó càng chạy, nó càng chính xác.

Nếu vì lý do nào đó, bạn muốn cài đặt ntp hoặc ntpdate trên hệ điều hành có systemd, trước tiên hãy tắt ứng dụng ntp của systemd.

sudo timedatectl set-ntp false

Tất nhiên, lệnh trên không cần thiết trên các bản phân phối không thuộc hệ thống.

Cài đặt ứng dụng ntpdate

Điều này phù hợp với máy tính gia đình, máy tính xách tay và các thiết bị khác không được kết nối liên tục với Internet.

Trên Debian, Ubuntu, Linux Mint, Zorin và các bản phân phối khác dựa trên các bản phân phối này, hãy chạy:

sudo apt install ntpdate

Trên tất cả các bản phân phối dựa trên Debian ở trên, nó được cấu hình sẵn, để chạy sau khi thấy một kết nối mạng mới. Bạn có thể buộc đồng bộ hóa thời gian ngay bây giờ nếu bạn ngắt kết nối khỏi mạng của mình và kết nối lại.

Trên Fedora, ntpdate sẽ không được dùng nữa, vì vậy bạn nên sử dụng daemon ntpd để thay thế (xem phần tiếp theo). Điều tương tự cũng được khuyến nghị cho tất cả các bản phân phối khác vì hai lý do:

  • Đôi khi, họ không bao gồm ntpdate trong một gói riêng mà gộp chung với ntpd từ phần tiếp theo.
  • Chúng không tự động ntpdate để chạy tự động trên mọi kết nối mạng. Bạn phải tự mình chèn ntpdate vào một tập lệnh tự động chạy sau khi mạng kết nối.

Trong trường hợp này, bạn nên cài đặt ntpd theo hướng dẫn trong phần tiếp theo.

Cài đặt ntpd Daemon

Trên Debian, Ubuntu, Zorin, Mint và các bản phân phối khác dựa trên Debian hoặc Ubuntu, hãy chạy:

sudo apt install ntp

Các bản phân phối này sẽ khởi động ntpd ngay lập tức và sau đó tự động khởi chạy nó mỗi lần khởi động; bạn không cần thực hiện thêm hành động nào.

Trên Fedora, hãy cài đặt bằng:

sudo dnf install ntp

Trên CentOS, hãy chạy:

sudo yum install ntp

Đối với Arch Linux, hãy sử dụng:

sudo pacman -S ntp

Và trên openSUSE, hãy nhập:

sudo zypper install ntp

Sau đó, cho phép dịch vụ khởi chạy khi khởi động và sau đó khởi động nó:

sudo systemctl enable ntpd
sudo systemctl start ntpd

Trên các bản phân phối khác chạy mà không có systemd, bạn có thể phải chạy các lệnh sau để thay thế:

sudo update-rc.d ntpd enable
sudo service ntpd start

hoặc bất kỳ thứ gì tương đương cho hệ điều hành của bạn.

Nếu bạn gặp lỗi ntpd không tồn tại, hãy thay thế “ntpd” bằng “ntp” trong các lệnh trên. Một số bản phân phối đặt tên khác nhau cho tệp dịch vụ daemon ntpd.

Kết luận

Ít khi bạn phải làm theo bất kỳ bước nào trong số này trên hệ điều hành Linux có giao diện người dùng đồ họa ít nhất. Đồng bộ hóa thời gian đã được định cấu hình cho bạn. Nhưng các bước này ít nhất có thể giúp bạn đôi khi gỡ lỗi một vấn đề. Nhiều bảng điều khiển môi trường máy tính để bàn cho phép bạn bật và tắt đồng bộ hóa thời gian. Trong nền, họ sử dụng các lệnh tương tự để định cấu hình điều này cho bạn, vì vậy bạn có thể tự thực hiện khi các công cụ giao diện người dùng đồ họa bị lỗi.