Làm cách nào để thiết lập Ubuntu để đồng bộ hóa đồng hồ của tôi với máy chủ thời gian?


23

Tôi muốn Ubuntu tự động đồng bộ hóa đồng hồ hệ thống của tôi với máy chủ thời gian khi khởi động.

Tuy nhiên, PC của tôi không được kết nối với Internet cho đến khi tôi đăng nhập (cộng thêm 5 - 10 giây để có biện pháp tốt).

Làm thế nào tôi có thể thiết lập nó để làm điều này?


2
Đã có câu trả lời tuyệt vời ở đây giải thích cách cài đặt ntpd để máy tính của bạn liên tục tự đồng bộ với máy chủ thời gian internet, nhưng tôi chỉ muốn thêm rằng mặc định Ubuntu sẽ đồng bộ hóa thời gian với ntp.ub Ubuntu.com bất cứ khi nào giao diện mạng của bạn xuất hiện "lên" (ví dụ khi bạn khởi động máy tính). Điều này dường như không xảy ra trong trường hợp của bạn do cách bạn kết nối với internet, nhưng những người đọc khác không nên cho rằng Ubuntu không đồng bộ hóa thời gian mà không cài đặt ntpd.

Đây là một cách giải thích làm thế nào để thiết lập thời gian.nist.gov: askubfox.com/questions/972799/ mẹo
SDsolar

Câu trả lời:


32

Điều này được thực hiện với NTP, trong đó hướng dẫn có sẵn. Về cơ bản, bạn sẽ cần cài đặt một daemon NTP. Dường như có một số lựa chọn có sẵn nhưng "tiêu chuẩn" là trong gói ntp. Theo các hướng dẫn tại trang được liên kết,

sudo apt-get install ntp

sẽ nhận mọi thứ được thiết lập để đồng bộ hóa với máy chủ NTP của Ubuntu.

EDIT : Tôi đã bỏ lỡ "lúc khởi động." Thông thường nên sử dụng ntpd để nhận được đồng bộ hóa liên tục giữa hệ thống của bạn và máy chủ, nhưng nếu bạn thực sự chỉ muốn đồng bộ hóa một lần, câu trả lời của mfisch dường như là điều bạn đang tìm kiếm.


3
Tôi nghĩ nói chung anh ấy sẽ tốt hơn nếu chỉ có ntpd luôn chạy và không kết nối được khi anh ấy không trực tuyến, điều đó không có nghĩa là có hại. Như đã nói, phương pháp của tôi cũng sẽ hoạt động;)
mfisch

Tôi ổn với nó chạy liên tục.
Nathan Osman

1
George, cứ làm đi. Tôi đã hy vọng trả lời câu hỏi "thực sự" của bạn vì điều khó chịu nhất trên thế giới là hỏi một câu hỏi như thế này và có tất cả các câu trả lời là "tại sao bạn muốn làm điều đó?"
mfisch

Đối với Ubuntu 18.04, lời khuyên để cài đặt ntpd được áp dụng lâu hơn. Theo mặc định systemd-timesyncd.service sẽ đồng bộ hóa thời gian.
ernstkl

9

Nếu bạn đi đến "Hệ thống-> Quản trị-> Thời gian và Ngày", bạn sẽ nhận được GUI để đặt ngày / giờ.

Một tùy chọn được cung cấp để sử dụng máy chủ thời gian. Nếu bạn kiểm tra nó và NTP chưa được cài đặt, nó sẽ hỏi bạn có muốn cài đặt nó không. Chỉ cần nhấp vào "có" và để nó thực hiện công việc của mình :)


Quên điều "khởi nghiệp". NTP thực hiện công việc của mình thường xuyên, điều đó có nghĩa là bạn sẽ được đồng bộ hóa bất cứ khi nào bạn trực tuyến ... Nhưng cách duy nhất để đảm bảo là sử dụng một số loại tập lệnh do mfisch cung cấp. Bây giờ thành thật mà nói: một khi được đồng bộ hóa, có rất ít khả năng máy tính của bạn bị rối tung trên đồng hồ. Vì vậy, nếu bạn sử dụng đồng bộ hóa thời gian mặc định và để nó thực hiện ở chế độ nền, bạn nên sử dụng hầu hết thời gian mà không phải làm gì thêm.
Little Jawa

Nó không được dán nhãn "Thời gian và ngày"?
Lửa

@Firefeather: cũng có thể như vậy. Tôi không có giao diện tiếng Anh, vì vậy tôi không thể nói được;)
Little Jawa

Ah, ngớ ngẩn với tôi, quên đi việc quốc tế hóa. Hệ thống en-us của tôi gọi nó là "Thời gian và Ngày".
Lửa

6

Bạn có thể làm điều này bằng cách sử dụng tạintpdate . tại có lẽ đã được cài đặt, nhưng ntpdate có thể không. (apt-get cài đặt ntpdate).

Đầu tiên tạo một tập lệnh nhỏ chạy ntpdate, hãy gọi nó là update_time.sh.

#!/bin/bash
ntpdate pool.ntp.org

Trong tệp .bash_login của bạn (mà bạn có thể cần tạo), hãy thêm vào đây:

at -f ~/update_time.sh now + 1 minute

Điều đó nên làm những gì bạn muốn. Bạn có thể thay đổi độ trễ khi sử dụng là 5 phút, 10 phút, v.v.

EDIT: Tôi chỉ nhận ra rằng bạn sẽ cần phải root để chạy ntpdate. Bạn sẽ cần đặt bit SUID trên tập lệnh update_time.sh mà tôi đã đề cập. Bạn có thể làm điều đó bằng cách chạy lệnh này từ lệnh (chỉ cần chạy một lần):

sudo chmod 4711 update_time.sh
sudo chown root update_time.sh

1
iirc Bạn không thể đặt suid trên tập lệnh .sh.
Broam

Bạn có thể làm suid trên ntpdate trực tiếp không? Điều đó có thể sẽ hoàn thành điều tương tự.
mfisch

2
Tại sao nên sử dụng at? Và nếu bạn sẽ tự động chạy ntpdate, tại sao không cài đặt ntpdịch vụ?
Bài viết củng cố

1
lưu ý: ntpdate không còn được cài đặt theo mặc định trên Ubuntu (16.04+) và không được dùng trong timedatectl. timedatectl điều khiển dịch vụ timesyncd của systemd, được sử dụng theo mặc định để đồng bộ hóa thời gian.
Corey Goldberg

0

Vì Ubuntu 16.04 timedatectl / timesyncd (là một phần của systemd) thay thế hầu hết ntpdate / ntp. Xem đồng bộ hóa thời gian .

Bạn có thể cần kích hoạt đồng bộ hóa thời gian bằng cách sử dụng:

$ sudo timedatectl set-ntp on

Nếu bạn muốn sử dụng chrony:

  • Nếu bạn yêu cầu sử dụng đồng bộ một lần: $ chronyd -q

  • Nếu bạn yêu cầu kiểm tra thời gian một lần, mà không cài đặt thời gian sử dụng: $ chronyd -Q

  • Để đồng bộ hóa liên tục, giải pháp được đề xuất là chrony:

niên đại (d)

Trình điều khiển NTP daemon chronyd tính toán độ lệch và độ lệch của đồng hồ hệ thống của bạn và liên tục điều chỉnh nó, do đó không có sự điều chỉnh lớn nào có thể dẫn đến các bản ghi không nhất quán. Chi phí là một chút sức mạnh xử lý và bộ nhớ, nhưng đối với một máy chủ hiện đại thì điều này thường không đáng kể. Cài đặt

Để cài đặt chrony, từ dấu nhắc thiết bị đầu cuối, nhập:

$ sudo apt install chrony

Bạn cũng có thể cần phải kích hoạt

sudo timedatectl set-ntp trên

Cập nhật: Một phương pháp khác nếu cách trên không hoạt động là đặt công việc định kỳ để chạy$ chronyd -q

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.