Làm cách nào để đặt thời gian hiện tại trên Linux?


69

Tại sao đầu ra của các lệnh sau lại khác nhau?

root@vmi2115:/var# hwclock
Sun 26 Jun 2011 01:21:38 PM CEST  -0.273230 seconds
root@vmi2495:/var# date
Sun Jun 26 15:21:39 CEST 2011
root@vmi2115:/var# 

Và tôi có thể thay đổi thời gian hiện tại trên Linux không?


1
Một tìm kiếm nhanh của Google trả về liên kết này:> cyberciti.biz/faq/howto-set-date-time-from-linux-command-prompt

Câu trả lời:


90

Thông thường, bạn sẽ muốn đặt thời gian tự động và trong trường hợp đó, bạn sẽ muốn thiết lập ntpdđể tự động đặt thời gian cho bạn.

Các chi tiết cụ thể hơi khác nhau từ phân phối đến phân phối, nhưng nếu bạn đang chạy Ubuntu, chẳng hạn, có một hướng dẫn về cách thiết lập NTP trên Ubuntu . Mặt khác, chỉ Google ntpd <distribution-name>và bạn có thể sẽ tìm thấy nó.

Tuy nhiên, nếu bạn muốn đặt thủ công, bạn có thể sử dụng date --set="<date string>". Ví dụ về điều này có thể là:

date --set="23 June 1988 10:00:00"
date --set="10:00:00"

37

Đặt Đồng hồ phần cứng theo Giờ hệ thống hiện tại.

# hwclock --systohc

Đặt thời gian hệ thống từ đồng hồ phần cứng.

# hwclock --hctosys

23

chỉ ntpdate ntp.ubuntu.comvà mọi thứ sẽ tốt đẹp

Có nhiều thông tin liên quan đến vấn đề này trên Tài liệu chính thức của Ubuntu


18
vui lòng giải thích thêm về câu trả lời của bạn và cung cấp lời giải thích cho QA và những người đọc trong tương lai về lệnh mà bạn đề cập làm gì và tại sao bạn lại đề xuất hành động đó. lưu ý: QA hỏi cách thay đổi thời gian chứ không phải cách giữ đồng bộ hóa.
Lorenzo Von Matterhorn

1
@LorenzoVonMatterhorn ok
Gangsar Swapurba

Điều này vẫn không có lời giải thích. Tôi nên làm gì nếu tôi chạy lệnh này?
jerclarke


1
Làm việc tuyệt vời để thiết lập thời gian chính xác.
Sabrina Gelbart

13

Một vấn đề phổ biến, rất khó chịu khác là, khi múi giờ sai được chọn ...

Kiểm tra múi giờ với đầu ra ngày:

$ ngày

Tự do ngày 23 tháng 8 lúc 18 giờ 47 phút UTC 2013

Để sửa loại múi giờ:

$ sudo tzselect

và chọn Vùng chính xác với các số tương ứng.

Nhiệm vụ thứ hai là đặt thời gian chính xác:

$ sudo ngày --set = "18:37:00"

Hoặc đơn giản là dành thời gian từ Đồng hồ CT:

$ sudo hwclock --hctosys


3

Trong các CentOSmúi giờ được đặt trong /usr/share/zoneinfo/, để thay đổi ngày hệ thống thành múi giờ cụ thể, bạn có thể:

Đầu tiên, tạo một bản sao lưu của tệp localtime hiện có.

sudo mv /etc/localtime /etc/localtime.bak

Tiếp theo, tạo liên kết:

sudo ln -s /usr/share/zoneinfo/Europe/Lisbon  /etc/localtime

Kiểm tra ngày hệ thống mới bằng cách gõ date.

Để điều chỉnh ngày hệ thống Linux theo cách thủ công, bạn có thể nhập:

date -s "11 MAR 2006 11:11:11"

HOẶC LÀ

date --set="11 MAR 2015 11:11:11"

HOẶC LÀ

date +%Y%m%d -s "20150311"

Để đặt Đồng hồ phần cứng thành Giờ hệ thống hiện tại:

hwclock --systohc

HOẶC LÀ

hwclock -w

1

"hwclock" là ngày của phần cứng (máy) và "ngày" là ngày của phần mềm (hệ thống hoạt động).

Để thay đổi ngày phần cứng máy tính:

hwclock --set --date="2013-7-31 09:30"

Để thay đổi ngày phần mềm:

date --set "2013-7-31 09:30"

1

Thử đi:

date +%T -s "12:21:00"

hoặc là

date +%T%p -s "12:22:20AM"
date +%T%p -s "12:23:30PM"

0

datetrả về thời gian đã cho là thời gian kể từ thời điểm cpu bắt đầu cộng với đồng hồ phần cứng bên trong thời gian đã hwclockcho , đưa ra thời gian đồng hồ bên trong có.

Thời gian dựa trên cpu có xu hướng trôi theo thời gian dài của máy, đó là lý do đằng sau sự tồn tại của hwclock --hctosyslệnh. Cũng là một trong những lý do đằng sau việc sử dụng Thời gian Giao thức Mạng, được sử dụng để điều phối thời gian quốc tế trên internet.


0

sử dụng cái này nếu không có máy khách NTP

date -s $(wget -q -O - http://www.timeapi.org/eest/now | cut -d '+' -f 1 | tr -d : | tr -d - | tr -d T | cut -c 1-12)

eest trong URL là múi giờ địa phương của bạn

Bạn có thể sử dụng utc ... và vv


nhưng cái này hoạt động với tôi: Askubfox.com/a/683136
user956584

0

Tôi có thể thay đổi thời gian hiện tại trên Linux không?

Đối với tôi, tôi cần chạy lệnh này trước:

sudo systemctl stop systemd-timesyncd

Nếu không, systemd sẽ thiết lập lại thời gian ngay lập tức. Sau khi dừng dịch vụ systemd, chạy datehoạt động như mong đợi:

$ sudo date -s 'january 1 1971'
Fri Jan  1 00:00:00 CET 1971
$ date
Fri Jan  1 00:00:00 CET 1971

Trong khi dịch vụ đang chạy, date -slệnh dường như hoạt động, nhưng chạy datemột lát sau sẽ cho tôi thời gian systemd một lần nữa.

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.