วิธีการตั้งเวลาปัจจุบันบน Linux?


69

ทำไมเอาต์พุตของคำสั่งต่อไปนี้จึงแตกต่างกัน?

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# 

และฉันสามารถเปลี่ยนเวลาปัจจุบันบน Linux ได้หรือไม่


1
ค้นหาอย่างรวดเร็วของ Google แสดงลิงค์นี้:> cyberciti.biz/faq/howto-set-date-time-from-linux-command-prompt

คำตอบ:


89

โดยปกติคุณจะต้องตั้งเวลาให้โดยอัตโนมัติและในกรณีนั้นคุณจะต้องตั้งค่าntpdให้ตั้งเวลาให้คุณโดยอัตโนมัติ

เฉพาะต่างออกไปเล็กน้อยจากการกระจายการกระจาย แต่ถ้าคุณกำลังใช้อูบุนตูเช่นมีคำแนะนำในการตั้งค่า NTP บน Ubuntu มิฉะนั้นเพียงแค่ Google ntpd <distribution-name>และคุณอาจจะเจอ

หากคุณต้องการที่จะตั้งด้วยตนเอง date --set="<date string>"แต่คุณสามารถใช้ ตัวอย่างของสิ่งนี้อาจเป็น:

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

37

ตั้งนาฬิกาฮาร์ดแวร์เป็นเวลาระบบปัจจุบัน

# hwclock --systohc

ตั้งเวลาของระบบจากนาฬิกาฮาร์ดแวร์

# hwclock --hctosys

23

เพียงแค่ntpdate ntp.ubuntu.comและทุกอย่างจะดี

มีข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ในเอกสารอย่างเป็นทางการของ Ubuntu


18
โปรดอธิบายรายละเอียดเพิ่มเติมเกี่ยวกับคำตอบของคุณและให้คำอธิบายกับ QA และผู้อ่านในอนาคตคำสั่งที่คุณพูดถึงทำอะไรและทำไมคุณถึงแนะนำการกระทำดังกล่าว หมายเหตุ: QA ถามว่าจะเปลี่ยนเวลาอย่างไรไม่ใช่วิธีซิงค์ข้อมูล
Lorenzo Von Matterhorn

1
@LorenzoVonMatterhorn ok
Gangsar Swapurba

เรื่องนี้ยังไม่มีคำอธิบาย ฉันควรคาดหวังว่าจะเกิดอะไรขึ้นหากฉันใช้คำสั่งนี้
jerclarke


1
ทำงานได้ดีเยี่ยมสำหรับการตั้งเวลาที่แน่นอน
Sabrina Gelbart

13

ปัญหาที่พบบ่อยและน่ารำคาญอีกอย่างคือเมื่อเลือกเขตเวลาที่ผิด ...

ตรวจสอบเขตเวลาด้วยผลลัพธ์วันที่:

$ วันที่

Fre Aug 23 18:47:04 UTC 2013

วิธีแก้ไขประเภทเขตเวลา:

$ sudo tzselect

และเลือกภูมิภาคที่ถูกต้องพร้อมตัวเลขที่เกี่ยวข้อง

ภารกิจที่สองคือการตั้งเวลาที่ถูกต้อง:

$ sudo date --set = "18:37:00"

หรือเพียงใช้เวลาจาก HW-Clock:

$ sudo hwclock --hctosys


3

CentOSตั้งอยู่ในเขตเวลาใน/usr/share/zoneinfo/การเปลี่ยนวันที่ของระบบเป็นเขตเวลาที่เฉพาะเจาะจงคุณสามารถ:

ก่อนอื่นให้ทำการสำรองไฟล์ localtime ที่มีอยู่

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

ถัดไปสร้างลิงค์:

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

dateตรวจสอบวันที่ระบบใหม่โดยการพิมพ์

ในการปรับวันที่ระบบ Linux ด้วยตนเองคุณสามารถพิมพ์:

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

หรือ

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

หรือ

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

วิธีตั้งค่านาฬิกาฮาร์ดแวร์เป็นเวลาระบบปัจจุบัน:

hwclock --systohc

หรือ

hwclock -w

1

"hwclock" เป็นวันที่ของฮาร์ดแวร์ (เครื่อง) และ "date" เป็นวันที่ของซอฟต์แวร์ (ระบบปฏิบัติการ)

สำหรับการเปลี่ยนวันที่ฮาร์ดแวร์พีซี:

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

สำหรับวันที่เปลี่ยนซอฟต์แวร์:

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


0

dateส่งคืนเวลาที่กำหนดเป็นเวลาตั้งแต่วินาทีที่ซีพียูเริ่มทำงานพร้อมกับนาฬิกาฮาร์ดแวร์ภายในเวลาที่กำหนดhwclockให้เวลาที่นาฬิกาภายในมี

เวลาที่ใช้ซีพียูมีแนวโน้มที่จะล่องลอยไปตามความยาวของเครื่องนั่นคือเหตุผลที่อยู่เบื้องหลังการมีอยู่ของhwclock --hctosysคำสั่ง ยังเป็นหนึ่งในเหตุผลที่อยู่เบื้องหลังการใช้ Network Protocol Time ซึ่งใช้ในการประสานเวลาระหว่างประเทศบนอินเทอร์เน็ต


0

ใช้สิ่งนี้หากยังไม่มีไคลเอ็นต์ 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 in URL เป็นเขตเวลาท้องถิ่นของคุณ

คุณสามารถใช้utc ... และอื่น ๆ


แต่อันนี้ใช้งานได้สำหรับฉัน: askubuntu.com/a/683136
user956584

0

จะเปลี่ยนเวลาปัจจุบันบน Linux ได้อย่างไร

สำหรับฉันฉันต้องเรียกใช้คำสั่งนี้ก่อน:

sudo systemctl stop systemd-timesyncd

มิฉะนั้น systemd จะรีเซ็ตเวลาทันที หลังจากหยุดบริการ systemd การทำงานจะdateทำงานอย่างที่คาดไว้

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

ในขณะที่บริการกำลังทำงานอยู่date -sคำสั่งก็ดูเหมือนว่าจะทำงานได้ แต่การเรียกใช้dateช่วงเวลาต่อมาจะให้เวลาฉัน systemd อีกครั้ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.