Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

CentOS:วิธีตั้งค่าวันที่ เวลา เขตเวลา และการซิงโครไนซ์ NTP

ในบทความนี้ เราจะแสดงวิธีตั้งเวลา วันที่ เขตเวลา ซิงโครไนซ์เวลากับเซิร์ฟเวอร์ NTP และแก้ไขปัญหาทั่วไปใน CentOS Linux

มีนาฬิกาสองประเภทบนเซิร์ฟเวอร์:ฮาร์ดแวร์ หนึ่งนาฬิกา (นาฬิกาตามเวลาจริง) ที่ทำงานแม้ว่าเซิร์ฟเวอร์จะปิดและระบบปฏิบัติการซอฟต์แวร์ นาฬิกา. เวลาบนนาฬิกาเหล่านี้อาจแตกต่างกัน หลังจากเริ่มระบบปฏิบัติการ นาฬิกาของซอฟต์แวร์จะอิงตามฮาร์ดแวร์และระบบปฏิบัติการอาจปรับเปลี่ยนได้
แอปพลิเคชันส่วนใหญ่ใช้เวลานาฬิกาของซอฟต์แวร์ในการทำงาน

Hwclock:การกำหนดค่าเวลาของฮาร์ดแวร์

นาฬิกาจับเวลา ใช้เพื่อตรวจสอบเวลาฮาร์ดแวร์ใน Linux:

  • hwclock --localtime — ตรวจสอบเวลาฮาร์ดแวร์โดยไม่มีการแก้ไข
  • hwclock --utc – แสดงเวลาหากนาฬิกาฮาร์ดแวร์แสดงเวลา UTC

# hwclock --localtime

2020-10-12 06:12:02.912866-04:00

# hwclock --utc

2020-10-12 02:12:18.915319-04:00

ในการตั้งเวลาฮาร์ดแวร์ตามเวลาของระบบ ให้รันคำสั่งนี้:
# hwclock --systohc
ในการตั้งเวลาฮาร์ดแวร์ที่คุณต้องการ ให้รันคำสั่งต่อไปนี้:
# hwclock --set --date "11 Oct 2020 17:30"

CentOS:วิธีตั้งค่าวันที่ เวลา เขตเวลา และการซิงโครไนซ์ NTP

การกำหนดค่าเวลาด้วยตนเองใน CentOS

ใน Linux วันที่ หรือ timedatectl เครื่องมือที่ใช้ตรวจสอบและตั้งเวลาซอฟต์แวร์ หากคุณโทร เดท โดยไม่มีพารามิเตอร์ใด ๆ มันจะแสดงเวลาปัจจุบันบนเซิร์ฟเวอร์ของคุณ:

# date

Sun Oct 11 22:14:54 EDT 2020

หากต้องการตั้งเวลาด้วยตนเอง คุณสามารถใช้ วันที่ ด้วยพารามิเตอร์เพิ่มเติม:

# date MMDDhhmm

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

# date 10261740

CentOS:วิธีตั้งค่าวันที่ เวลา เขตเวลา และการซิงโครไนซ์ NTP

หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับวันที่ เวลา เขตเวลา การตั้งค่าการซิงโครไนซ์ การตั้งค่าเวลาออมแสง (DST) timedatectl ถูกนำมาใช้. ซึ่งจะให้ข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งเวลาบนเซิร์ฟเวอร์

CentOS:วิธีตั้งค่าวันที่ เวลา เขตเวลา และการซิงโครไนซ์ NTP

Timedatectl ยังอนุญาตให้เปลี่ยนเวลา:

# timedatectl set-time '2020-10-11 17:51:00'

จะตั้งค่า TimeZone ใน CentOS ได้อย่างไร

ในการตั้งเวลาตามเขตเวลาของคุณบน CentOS Linux คุณสามารถเปลี่ยนได้ด้วยตนเอง ในการทำเช่นนั้น คุณสามารถใช้เครื่องมือสองอย่าง:

  • timedatectl
  • tzdata

หากต้องการเปลี่ยนเขตเวลาโดยใช้ timedatectl , รันคำสั่งนี้:

# timedatectl set-timezone Canada/Pacific
# date

CentOS:วิธีตั้งค่าวันที่ เวลา เขตเวลา และการซิงโครไนซ์ NTP

หรือคุณสามารถใช้ tzdata . หากต้องการใช้วิธีนี้ ให้แทนที่ไฟล์ /etc/localtime กับคนที่คุณต้องการ รายการโซนเวลาทั้งหมดอยู่ใน /usr/share/zoneinfo/ ไดเร็กทอรี มาเปลี่ยนเขตเวลาเป็น แคนาดา/แปซิฟิก . สำรองไฟล์ตำแหน่งปัจจุบัน:

# mv /etc/localtime /etc/localtime.bak

สร้าง symlink ไปยังเขตเวลาที่คุณต้องการตั้งค่า:
# ln -s /usr/share/zoneinfo/Canada/Pacific /etc/localtime

กำหนดค่า CentOS ให้ซิงค์เวลากับเซิร์ฟเวอร์เวลา NTP

คุณสามารถกำหนดค่าการซิงโครไนซ์เวลาอัตโนมัติบนโฮสต์ของคุณด้วยเซิร์ฟเวอร์ NTP (Network Time Protocol) ภายนอก ในการดำเนินการ คุณต้องติดตั้ง บริการ ntp . ตัวอย่างเช่น คุณสามารถติดตั้งโดยใช้ yum ใน CentOS 7:

# yum install ntp -y

หลังการติดตั้ง เริ่มบริการ ntpd และเพิ่มในการเริ่มต้น:

# systemctl start ntpd.service
# systemctl enable ntpd.service

ตรวจสอบให้แน่ใจว่าบริการกำลังทำงาน:

# service ntpd status

Redirecting to /bin/systemctl status ntpd.service
● ntpd.service - Network Time Service
Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-10-11 15:37:33 +06; 5min ago
Main PID: 3057 (ntpd)
CGroup: /system.slice/ntpd.service
└─3057 /usr/sbin/ntpd -u ntp:ntp -g

ระบุเซิร์ฟเวอร์ NTP เพื่อซิงโครไนซ์เวลากับใน /etc/ntp.conf :

server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org

เวลาจะถูกซิงโครไนซ์ในทางกลับกัน หากไม่มีเซิร์ฟเวอร์ NTP ตัวแรก ระบบจะใช้เซิร์ฟเวอร์ที่สอง ฯลฯ

คุณสามารถซิงโครไนซ์เวลากับเซิร์ฟเวอร์ NTP ที่ระบุได้ด้วยตนเองโดยใช้คำสั่งนี้:

# ntpdate 192.168.1.23

โดยค่าเริ่มต้น ntpd เปิดใช้งาน "โหมด 11 นาที" หมายความว่าเวลาจะซิงโครไนซ์ทุก 11 นาที หากคุณไม่สามารถใช้ ntpd daemon คุณสามารถกำหนดค่าการซิงโครไนซ์เวลาโดยใช้ cron เพิ่มคำสั่งต่อไปนี้ใน cron:

# ntpdate pool.ntp.org

จะซิงค์เวลาใน CentOS 8 โดยใช้ Chronyd ได้อย่างไร

ใน CentOS 8 คุณจะต้องใช้ chrony เพื่อซิงโครไนซ์เวลา เนื่องจาก ntp และ ntpdate ถูกลบออกจากที่เก็บอย่างเป็นทางการแล้ว

ประโยชน์หลักของโครนีคือ:

  • การซิงโครไนซ์เวลาที่รวดเร็วและแม่นยำ
  • การทำงานที่เหมาะสมหากคุณไม่มีสิทธิ์เข้าถึงนาฬิกาหลัก (ntpd ต้องใช้คำขอเป็นประจำ)
  • โดยค่าเริ่มต้น เวลาจะไม่ถูกแก้ไขทันทีหลังจากการซิงโครไนซ์เพื่อป้องกันปัญหาใดๆ ในการรันโปรแกรม
  • ใช้ทรัพยากรน้อยลง

โดยค่าเริ่มต้น chrony ได้รับการติดตั้งใน CentOS Linux แล้ว แต่ถ้าคุณไม่มีด้วยเหตุผลบางประการ ให้ติดตั้ง:

# dnf install chrony

เช่นเดียวกับบริการอื่น ๆ ต้องเริ่มและเพิ่ม chrony เพื่อเริ่มต้นหลังจากการติดตั้ง:

# systemctl start chronyd
# systemctl enable chronyd

ตรวจสอบสถานะบริการ chronyd:

# systemctl status chronyd

CentOS:วิธีตั้งค่าวันที่ เวลา เขตเวลา และการซิงโครไนซ์ NTP

เพื่อให้แน่ใจว่าการซิงโครไนซ์เวลาทำงาน ให้รันคำสั่งนี้:

# timedatectl status

NTP Service: active

CentOS:วิธีตั้งค่าวันที่ เวลา เขตเวลา และการซิงโครไนซ์ NTP

ไฟล์การกำหนดค่า Chrony คือ /etc/chrony.conf . ระบุรายการเซิร์ฟเวอร์ NTP ที่คุณต้องการใช้สำหรับการซิงโครไนซ์ ชอบ ntp , chrony มีอินเทอร์เฟซบรรทัดคำสั่ง:chronyc . หากต้องการดูข้อมูลเกี่ยวกับตัวเลือกการซิงโครไนซ์เวลาปัจจุบัน ให้รันคำสั่งนี้:

# chronyc tracking

วิธีดูข้อมูลเกี่ยวกับเซิร์ฟเวอร์การซิงค์:

# chronyc sources

หากต้องการตั้งค่าวันที่และเวลาแบบเจาะจงด้วยตนเอง คุณสามารถใช้ วันที่ แต่ก่อนหน้านี้ปิดการใช้งาน chronyd ภูต

ปัญหาการซิงค์เวลาทั่วไปใน CentOS

ในส่วนนี้ ฉันจะอธิบายข้อผิดพลาดทั่วไปที่ปรากฏขึ้นเมื่อทำงานกับ timedatectlntp .

ในระหว่างการซิงโครไนซ์เวลาด้วยตนเอง คุณอาจพบข้อผิดพลาดนี้:

# ntpdate pool.ntp.org

ntpdate [26214]: the NTP socket is in use, exiting

ซึ่งหมายความว่า ntpd daemon กำลังทำงานและกำลังป้องกันการซิงโครไนซ์เวลาด้วยตนเอง หากต้องการซิงโครไนซ์เวลาด้วยตนเอง ให้หยุด ntpd daemon:

# service ntpd stop

และเรียกใช้การซิงโครไนซ์อีกครั้ง

ข้อผิดพลาดเดียวกันอาจเกิดขึ้นเมื่อทำงานกับ timedatectl:

Failed to set time: Automatic time synchronization is enabled.

คุณต้องปิดใช้งานการซิงค์อัตโนมัติใน timedatectl:

# timedatectl set-ntp 0

และรันคำสั่งนี้เพื่อตั้งเวลาและวันที่ที่คุณต้องการ:

# timedatectl set-time '2020-11-12 17:41:00'

เมื่อทำงานกับเขตเวลา อาจเกิดขึ้นว่าไม่ได้ติดตั้งบนเซิร์ฟเวอร์ของคุณและคุณไม่สามารถสร้าง symlink สำหรับเวลาท้องถิ่นได้ หากต้องการให้โซนเวลาพร้อมใช้งานบนโฮสต์ของคุณ ให้ติดตั้งเครื่องมือ tzdata:

# yum install tzdata -y

นอกจากนี้ คุณอาจพบข้อผิดพลาดบางอย่างระหว่างการซิงโครไนซ์ด้วยตนเอง เช่น ข้อผิดพลาดต่อไปนี้:

11 Oct 21:11:19 ntpdate[897482]: sendto(xx.xx.xx.98): Operation not permitted

ในกรณีนี้ ให้ตรวจสอบกฎของไฟร์วอลล์/iptables และตรวจสอบว่าพอร์ต UDP 123 เปิดอยู่บนเซิร์ฟเวอร์ของคุณ นอกจากนี้ โฮสต์ NTP บางรายการอาจไม่พร้อมใช้งานในระหว่างการตรวจสอบ