4.5/5 - (4 bình chọn)

Nếu VPS bạn chạy giờ không đúng, làm ảnh hưởng đến thời gian trên web (lỗi giờ đơn hàng chẳng hạn). Nguyên nhân do dịch vụ ntp của hệ điều hành không hoạt động, hoặc cổng UDP 123 đã bị nhà cung cấp chặn để chống DDOS dẫn đến ntp không cập nhật được thời gian. Hôm nay mình chia sẻ đoạn lệnh để sửa nhanh lỗi nãy. Cập nhật giờ theo google.

ntpdiagram
NTP service

Đầu tiên bạn login vào SSH. Chạy các lệnh sau:

date -s "$(curl -H'Cache-Control:no-cache' -sI time.google.com | grep '^Date:' | cut -d' ' -f3-6)Z"

Chạy xong chúng ta sẽ kiểm tra lại xem chính xác chưa bằng lệnh

timedatectl

Kết quả hiện ra như sau:

               Local time: Sun 2021-12-26 16:35:42 +07
           Universal time: Sun 2021-12-26 09:35:42 UTC
                 RTC time: Sun 2021-12-26 09:35:42
                Time zone: Asia/Ho_Chi_Minh (+07, +0700)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

Trong đó:

  • Local time: Ngày giờ hiện tại của VPS. Cái này sẽ chuẩn từng giây theo google nhé.
  • Universal time: Giờ quốc tế múi giờ UTC
  • RTC time: Giờ của main board (nếu nó giống với Universal time thì có nghĩa là giờ đã chính xác)

Đặt Cron để cập nhật thời gian.

Dù đã cập nhật thời gian đúng, nhưng khi reboot vps, múi giờ cũng sẽ tiếp tục lỗi (do thời gian vẫn cần ntp cập nhật). Do đó chúng ta sẽ đặt 2 cronjob cho vps cập nhật giờ theo google để đảm bảo thời gian trên VPS được chính xác, không gây lỗi.

Để làm việc này, bạn gõ crontab -e, sau đó bấm phím I để chèn nội dung vào. Bạn chèn 2 lệnh sau vào cuối file nhé.

0 * * * * date -s "$(curl -H'Cache-Control:no-cache' -sI time.google.com | grep '^Date:' | cut -d' ' -f3-6)Z"
@reboot date -s "$(curl -H'Cache-Control:no-cache' -sI time.google.com | grep '^Date:' | cut -d' ' -f3-6)Z"

Chèn xong bạn bấm ESC rồi gõ :wq để lưu và thoát ra

Giải thích:

  • Dòng 1: Cập nhật thời gian từ google, cứ 1 tiếng cập nhật 1 lần
  • Dòng 2: Cập nhật giờ ngay khi vps reboot xong

Chúc các bạn sửa được lỗi của mình nhé!

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *