Chuyên mục
Linux

Điều chỉnh timezone cho máy chủ Linux và Crontab

Thông thường mình ít khi nào chú ý đến timezone (múi giờ) của máy chủ Linux. Đến gần đây khi nghiên cứu về BorgBackup, mình mới phát hiện ra timezone của máy chủ nếu không thiết lập đúng sẽ ảnh hưởng thông tin ngày giờ của các bản backup.

Ví dụ như trường hợp này: mình yêu cầu thực hiện backup bằng Borg vào khoảng 20:38 (giờ VN) và tên file được lưu theo format ngày tháng %Y-%m-%d_%H:%M. Khi kiểm tra lại thì tên file lại ghi 13:38, là thời gian của múi giờ chuẩn. GMT

2024-01-08_13:38                     Mon, 2024-01-08 20:38:30 [c30dee52fa104c6057f1819312f5dc1c88c17a0a6e5d3c3fb8343cc657ae8b92]Code language: YAML (yaml)

Mình cần thay đổi timezone của máy chủ về múi giờ +7 của Việt Nam, để tránh bối rối khi cần phục hồi dữ liệu trong tương lai.

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: noCode language: YAML (yaml)

Điều chỉnh timezone thành Asia/Ho_Chi_Minh

sudo timedatectl set-timezone Asia/Ho_Chi_MinhCode language: JavaScript (javascript)

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: noCode language: YAML (yaml)

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/thuanbui_backup.sh > /dev/null 2>&1Code language: JavaScript (javascript)

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/thuanbui_backup.sh > /dev/null 2>&1Code language: YAML (yaml)

Vậy là xong!

Nếu bài viết của mình mang đến thông tin, kiến thức hữu ích cho bạn, đừng ngại mời mình ly bia để có thêm động lực chia sẻ nhiều hơn nữa. Cám ơn bạn!

Lưu ý: Nếu bạn cần hỗ trợ kỹ thuật, vui lòng gửi câu hỏi trực tiếp ở phần Thảo luận bên dưới, mình sẽ trả lời sớm. Đừng mò vào hỏi trong fanpage Yêu Chạy Bộ, sẽ không có phản hồi đâu!

Bởi Thuận Bùi

Runner at Yêu Chạy Bộ. Blogger at Ba Lô & Dép Lào. Web Developer at TB's Blog.
Follow me: Facebook / Instagram

Một bình luận trong “Điều chỉnh timezone cho máy chủ Linux và Crontab”

Có thể setup timezone như này luôn, ko cần phải can thiệp bằng $TZ

rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Ho_Chi_Minh /etc/localtime
echo “Asia/Ho_Chi_Minh” > /etc/timezone

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 *