Làm cách nào để đặt thời gian và ngày từ Internet?


35

Làm cách nào để truy xuất ngày từ Internet và đặt đồng hồ trên máy tính của tôi, từ dòng lệnh?


3
Tôi không hiểu downvote. Những câu hỏi đơn giản là những gì làm cho một cộng đồng mạnh mẽ. Ví dụ, hãy xem cái này
Mohsen

3
Khi tôi di chuột lên trên mũi tên xuống của câu hỏi bằng chuột, tôi thấy: "Câu hỏi này không cho thấy bất kỳ nỗ lực nghiên cứu nào; nó không rõ ràng hoặc không hữu ích". Tôi sẽ cố gắng hạ thấp câu hỏi của bạn dựa trên câu hỏi đầu tiên (không có dấu hiệu cho thấy bạn đã tìm thấy gì), câu hỏi thứ hai (không có dấu hiệu nào về nền tảng cụ thể mà bạn đang làm việc và tại sao điều này phải là dòng lệnh (thay vì trình nền thời gian thông thường) ) thứ ba (hầu hết người dùng * nix sẽ có một số trình nền thời gian được cài đặt theo mặc định).
Anthon

+1 Tôi cũng không hiểu các downvote, đơn giản vì đây là thứ đã làm tôi thất vọng nhiều lần trước đây và dường như không thể tìm thấy bất cứ điều gì súc tích và hữu ích về chủ đề cụ thể này.
l0b0

@Mohsen Tôi không downvote nhưng sự khác biệt cho câu hỏi bạn liên kết là không có switchruby trong khi bạn có thể đặt trực tiếp ngày qua date -s(như được hiển thị trong trang chủ) hoặc sử dụng bất kỳ lệnh nào được mô tả bên dưới ...
Ulrich Dangel

1
@Anthon Tôi không đồng ý: câu hỏi đó là về một thiết bị nhỏ với BusyBox, điều này khiến cho lời khuyên chung chung sử dụng NTP không nhất thiết phải áp dụng
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


29

Bạn có thể dùng :

sudo dpkg-reconfigure tzdata

để cấu hình múi giờ của bạn.

Để cập nhật thời gian và ngày từ internet, hãy sử dụng như sau:

cài đặt, dựng lên

Nếu ntpd không được cài đặt, hãy sử dụng bất kỳ một trong các lệnh sau để cài đặt ntpd:

  • Đối với RPM dựa trên:

    yum install ntp 
    
  • Dành cho Debian dựa trên:

    sudo apt-get install ntp
    

Cấu hình

Ít nhất bạn nên đặt tham số sau trong tệp cấu hình /etc/ntp.conf: máy chủ

Ví dụ: mở tệp /etc/ntp.conf bằng trình soạn thảo văn bản vi:

  # vi /etc/ntp.conf

Xác định vị trí tham số máy chủ và thiết lập nó như sau:

  server pool.ntp.org

Lưu tệp và khởi động lại dịch vụ ntpd:

  # /etc/init.d/ntpd start

Bạn có thể đồng bộ hóa đồng hồ hệ thống với máy chủ NTP ngay lập tức bằng lệnh sau:

  # ntpdate pool.ntp.org

* Để cài đặt thời gian và ngày theo cách thủ công, hãy sử dụng cú pháp sau:

 date --set="STRING"

Ví dụ: đặt dữ liệu mới thành ngày 2 tháng 10 năm 2006 18:00:00, nhập lệnh sau với tư cách người dùng root:

# date -s "2 OCT 2006 18:00:00"

HOẶC LÀ

# date --set="2 OCT 2006 18:00:00"

Bạn cũng có thể đơn giản hóa định dạng bằng cú pháp sau:

# date +%Y%m%d -s "20081128"

Để đặt thời gian, hãy sử dụng cú pháp sau:

# date +%T -s "10:13:13"

Ở đâu,

10: Giờ (hh) 13: Phút (mm) 13: Thứ hai (ss)

Sử dụng% p locale tương đương với AM hoặc PM, nhập:

# date +%T%p -s "6:10:30AM"

# date +%T%p -s "12:10:30PM"

Mặc dù thông tin ngày có vẻ hợp lệ, nhưng nó không đưa yêu cầu from the internettừ tiêu đề của OP vào bất cứ nơi nào.
Anthon

Tôi tin rằng gói tzdata (dữ liệu múi giờ) chỉ đồng bộ hóa dữ liệu từ internet. Đúng nếu tôi đã sai lầm .
tusharmakkar08

3
tzdata là thông tin về múi giờ và thời gian tiết kiệm ánh sáng ban ngày (bắt đầu, kết thúc, kỷ nguyên) không phải là ngày và giờ thực tế . Tất nhiên là thuận tiện để biết cách truy cập giờ địa phương của bạn dựa trên kiến ​​thức về múi giờ của bạn và thời gian UTC, nhưng bạn vẫn cần truy xuất thông tin sau từ internet.
Anthon

Bạn sai rồi. dữ liệu múi giờ phải được cập nhật (vì có những thay đổi xảy ra mọi lúc) NHƯNG nó không tự động cập nhật từ internet. Nó không đặt thời gian từ internet.
Ulrich Dangel

@Anthon: Tôi đã chỉnh sửa câu trả lời của tôi tương ứng. Cảm ơn bạn.
tusharmakkar08

23

Một mã nhỏ tôi tìm thấy để cập nhật thời gian của bạn trong trường hợp bạn không muốn cài đặt bất cứ thứ gì chỉ để cập nhật ngày. :)

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

1
Tôi sử dụng google.inđể có được thời gian hiện tại cho múi giờ của mình (ẤN ĐỘ).
Dilawar

Lưu ý dấu vết Zchỉ ra rằng thời gian được đưa ra theo múi giờ zulu, do đó không cần thao tác múi giờ đặc biệt nếu múi giờ máy tính được đặt chính xác.
dùng202729

10

Tôi sử dụng cái này:

sudo ntpd -qg; sudo hwclock -w

đầu tiên hãy nói với ntpd chỉ đặt thời gian và dừng lại sau đó với -q. Ngoài ra, trong trường hợp đồng hồ của bạn có lỗi lớn, chúng ta cần nói với ntpd cũng điều chỉnh trong trường hợp đó với -g. Cuối cùng, ghi đồng hồ vào phần cứng để bảo toàn các thay đổi khi khởi động lại với hwclock -w (-w để đặt hardwareclock theo thời gian hệ thống hiện tại, có một sự khác biệt).


1
tôi có xu hướng làm điều này với "&&" thay vì dấu chấm phẩy để nếu lệnh đầu tiên bị lỗi (ví dụ như kết nối mạng bị hỏng) thì lệnh thứ hai bị ngắn mạch
Theophrastus


5

Một số các bản phân phối được vận chuyển rdate cho mục đích đó. Cách sử dụng cơ bản:

# just query
bash-4.2$ rdate pool.ntp.org
rdate: [pool.ntp.org]   Wed Jun 12 11:05:40 2013

# set system time
bash-4.2$ rdate -s pool.ntp.org

Cách tốt hơn và dễ dàng hơn ntp
andrewtweber 30/03/2016

pool.ntp.orgbây giờ từ chối kết nối từ rdate. time.nist.govcông trinh. Ngoài ra, một khi bạn đã đặt thời gian hệ thống, bạn cũng nên đặt đồng hồ phần cứng bằng cách chạy hwclock -wđể đặt thời gian hệ thống. Sau đó, bạn có thể xác minh nó là chính xác bằng cách chạyhwclock -r
MatthewLee

5

Sau một số nghiên cứu, tôi đã kết thúc với điều này. Tôi cũng đã áp dụng nó cho máy chủ của riêng tôi:

sudo apt-get install ntp
sudo dpkg-reconfigure ntp
ntpq -p

Nếu lệnh cuối cùng hiển thị một danh sách máy chủ hợp lệ, bạn tốt để đi. Lệnh sẽ chạy một tập hợp các thuật toán khá phức tạp, nó sẽ lặp đi lặp lại đồng hồ của bạn, trong số những thứ khác, và bù cho chúng. Bạn sẽ kết thúc với một chiếc đồng hồ khá chính xác ngay cả khi bạn mất kết nối với các máy chủ NTP. Tuy nhiên, lệnh không cần vài phút để bắt đầu.

Nguồn: đâyđây .


0

Để tìm "đồng nghiệp" (máy chủ bạn có thể truy vấn) bạn có thể sử dụng ntpq -p.

Nếu bạn đã có dịch vụ NTP đang chạy, bạn phải dừng dịch vụ này trước khi cập nhật thủ công, ví dụ như sử dụng sudo service ntp stop.

Bây giờ bạn có thể truy vấn một đồng nghiệp, ví dụ bằng cách sử dụng sudo ntpdate "peer".


0

Sử dụng rdate công cụ như đề xuất trong manatwork 's câu trả lời, nhưng với giao thức SNTP -nvà IPv4 -4tùy chọn trên:

# just print synced time, not set
rdate -n -4 -p time-a.nist.gov

# print and set synced time
sudo rdate -n -4 time-a.nist.gov

Công cụ này có thể được cài đặt trên Debian theo cách này:

sudo apt-get install rdate


0

Tôi cũng đang tìm kiếm một cách không ntp / ntpd để đặt lại đồng hồ theo định kỳ. Tôi thích phân tích cú pháp tiêu đề google.com nhưng thấy nó không hoạt động trên Ubuntu. Tôi nghĩ rằng điều này cũng sẽ làm việc trên một Raspberry Pi.

sudo date +"%d %b %Y %T %Z" -s "$(wget -qSO- --max-redirect=0 http://google.com 2>&1 | grep '^  Date:' | cut -d' ' -f 5-)"

Cũng là một thay thế bằng cách sử dụng curl thay vì wget.

sudo date +"%d %b %Y %T %Z" -s "$(curl -s --head http://google.com | grep '^Date:' | cut -d' ' -f 3-)"

Đã thử nghiệm trên PI với Mạng di động và kết quả tương tự nhau:

Using host & wget -- RCV: 1324 bytes SND: 581 bytes
Using host & curl -- RCV: 1318 bytes SND: 567 bytes

Lưu ý Tôi sử dụng máy chủ để phân giải google.com thành địa chỉ IP để tôi chỉ có thể mở IP đó trong thời gian của lệnh này bằng iptables.

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.