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.
Đầ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é!