การแก้ไขนาฬิการะบบ CentOS


12

การใช้ฟังก์ชั่น time C (จำนวนวินาทีตั้งแต่ Epoch) แสดงให้เห็นว่าเวลาบนเซิร์ฟเวอร์ CentOS 6 ปัจจุบันของฉันอยู่หลัง 7 ชั่วโมงเมื่อเทียบกับเซิร์ฟเวอร์อื่นด้วยเวลาที่ถูกต้อง ฉันจะแก้ไขนาฬิการะบบได้อย่างไร ฉันไม่คิดว่ามันจะลอยเพราะฉันเพิ่งติดตั้งเซิร์ฟเวอร์นี้ไม่กี่สัปดาห์ที่ผ่านมา แต่มันอาจจะเป็น ฉันติดตั้ง ntpd แต่มันไม่ได้ช่วยบางทีอาจเป็นเพราะความแตกต่างของเวลามากเกินไป


3
TZ=UTC dateตรวจสอบผลลัพธ์จากคำสั่งที่
Michael Hampton

1
คุณพูดถูก ntpd จะไม่แก้ไขความแตกต่างของเวลา เพื่อให้ ntpd ใช้งานได้จริงระบบของคุณต้องอยู่ภายในเซิร์ฟเวอร์เวลาไม่กี่นาที
fpmurphy

เสาร์ 30 พ.ย. 09:09:21 UTC 2013 เป็นผลลัพธ์ที่ฉันเพิ่งได้รับ
user3180

ใช่นั่นคือเจ็ดชั่วโมงหลัง
Michael Hampton

คำตอบ:


23

คำตอบง่ายๆคือ "ตั้งค่าวันที่ด้วยตนเอง" ซึ่งคุณต้องทำ แต่เพื่อป้องกันไม่ให้เกิดเหตุการณ์นี้อีกครั้งคุณควรทำมากกว่านั้น

  1. ตรวจสอบให้แน่ใจว่าการกำหนดค่าเขตเวลาของระบบอยู่ในสถานะมีสติ

    เว้นแต่จะมีเหตุผลที่แข็งแกร่งมากที่จะไม่ทำเช่นนั้น (เช่นปัญหาความเข้ากันได้ของซอฟต์แวร์) นาฬิกาของเซิร์ฟเวอร์ควรทำงานในเวลา UTC

    หากคุณตัดสินใจที่จะไม่ใช้เวลา UTC tzselectเลือกเขตเวลาโดยใช้ เขตเวลาจะถูกพิมพ์บนหน้าจอซึ่งคุณจะใช้ด้านล่าง Europe/Moscowตัวอย่างจะเป็น มิฉะนั้นใช้UTCเป็นเขตเวลาด้านล่าง

    Here is that TZ value again, this time on standard output so that you
    can use the /usr/bin/tzselect command in shell scripts:
    Europe/Moscow
    

    ตั้งค่านาฬิการะบบเป็นเขตเวลาที่คุณต้องการด้วยขั้นตอนต่อไปนี้:

    1. แทนที่เนื้อหาของ/etc/sysconfig/clockด้วยสิ่งต่อไปนี้:

      ZONE="<timezone>"
      UTC=true
      

      ตัวอย่างเช่น:

      ZONE="Europe/Moscow"
      UTC=true
      

      โปรดทราบว่าUTC=trueควรตั้งค่าไว้ที่นี่แม้ว่าคุณจะไม่ได้ใช้ UTC เป็นเขตเวลาของคุณ สิ่งนี้อ้างถึงนาฬิกาฮาร์ดแวร์ของเซิร์ฟเวอร์ซึ่งควรเป็น UTC โดยไม่คำนึงถึงเขตเวลาระบบที่คุณเลือก

    2. แทนที่/etc/localtimeไฟล์ด้วยลิงก์ไปยังเขตเวลาที่เลือก:

      # ln -snf /usr/share/zoneinfo/<timezone> /etc/localtime
      

      ตัวอย่างเช่น:

      # ln -snf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
      # ln -snf /usr/share/zoneinfo/UTC /etc/localtime
      
  2. ตั้งนาฬิกาด้วยตนเองเป็นเวลาปัจจุบัน

    1. ซิงค์นาฬิการะบบกับเวลาปัจจุบัน:

      # ntpd -g -q
      
    2. ตรวจสอบว่าเวลาปรากฏถูกต้อง:

      # date
      
    3. ซิงค์นาฬิกาฮาร์ดแวร์ของเซิร์ฟเวอร์กับนาฬิการะบบ:

      # hwclock -wu
      
  3. รีสตาร์ทคอมพิวเตอร์ จำเป็นต้องรีสตาร์ทเนื่องจากบริการระบบทั้งหมดจะต้องเริ่มต้นใหม่เพื่อรับเวลาและเขตเวลาที่ถูกต้องและนาฬิกาฮาร์ดแวร์ของเซิร์ฟเวอร์ต้องได้รับการทดสอบ (เช่นแบตเตอรี่ที่ชำรุด)

    หลังจากรีสตาร์ทตรวจสอบเพื่อดูว่าระบบแสดงเวลาที่ถูกต้องและ ntpd นั้นทำงานอย่างถูกต้อง


ขอบคุณ Michael มาก ๆ ฉันจะมั่นใจได้อย่างไรว่าถูกต้องระหว่างการตั้งค่า ฉันจำได้ว่าเลือกเขตเวลาที่ถูกต้อง แต่เวลาสิ้นสุดลงยังคงผิด
user3180

ในตัวติดตั้งแบบกราฟิกจะมีช่องทำเครื่องหมายระบุว่า "นาฬิการะบบใช้ UTC" ออกจากการตรวจสอบนี้เสมอไม่ว่าคุณจะเลือกเขตเวลาใด
Michael Hampton

0

จุดคือตรวจสอบให้แน่ใจว่าเขตเวลาเป็นเขตเดียวกันกับกล่องที่คุณกำลังเปรียบเทียบ

แก้ไข

ถ้า TZ แตกต่าง

/ etc / localtime

จากนั้นจำไว้ว่าให้นำ UTC ชดเชยเข้าบัญชีเมื่อเปรียบเทียบเวลาของระบบ

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