1. Điều chỉnh timezone cho máy chủ
Xem thiết lập timezone hiện tại
timedatectl
Kết quả trả về cho thấy time zone đang là Etc/UTC
Local time: Mon 2024-01-15 01:03:23 UTC
Universal time: Mon 2024-01-15 01:03:23 UTC
RTC time: Mon 2024-01-15 01:03:23
Time zone: Etc/UTC (UTC, +0000)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
Điều chỉnh timezone thành Asia/Ho_Chi_Minh
sudo timedatectl set-timezone Asia/Ho_Chi_Minh
Bạn có thể thay đổi Asia/Ho_Chi_Minh qua 1 timezone khác. Để xem danh sách timezone, dùng lệnh timedatectl list-timezones
Kiểm tra lại timezone của hệ thống timedatectl
, thông số đã được đổi thành múi giờ +7
Local time: Mon 2024-01-15 08:08:37 +07
Universal time: Mon 2024-01-15 01:08:37 UTC
RTC time: Mon 2024-01-15 01:08:37
Time zone: Asia/Ho_Chi_Minh (+07, +0700)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
2. Điều chỉnh timezone cho crontab
Tuy máy chủ đã được điều chỉnh qua timezone VN, nhưng crontab lại luôn thực hiện tác vụ dựa trên timezone GMT chuẩn. Mình phát hiện ra vấn đề này khi kiểm tra lại các file backup. Cron được thiết lập thực hiện lúc 0:0 sáng mỗi ngày
0 0 * * * /home/blntech_bk.sh > /dev/null 2>&1
Nhưng tên file lại có tên 2024-01-10_07:00
, nghĩa là cronjob được thực thi dựa trên timezone chuẩn, chứ không phải timezone của máy chủ.
Để bảo đảm các tác vụ cron được chạy dựa trên timzezone +7, mình cần bổ sung thêm thông số TZ=Asia/Ho_Chi_Minh vào câu lệnh như dưới đây
0 0 * * * TZ=Asia/Ho_Chi_Minh /home/bltech_bk.sh > /dev/null 2>&1
Vậy là xong!