علی پوربازرگان
علی پوربازرگان
خواندن ۶ دقیقه·۳ سال پیش

آماده کردن timezone سرورهای لینوکسی برای تغییرات قانون ساعت کشور ۱۴۰۰

physicalgeography.net
physicalgeography.net


اگه مدیر سیستم هستین و قبلا با موضوع timezone درگیر نشدین این مطلب احتمالا مناسب شماست.

لطفا موارد رو با مسئولیت خودتون انجام بدین البته که چیز خطرناکی هم نیست ولی بهتره قبل از اعمال روی سرور پروداکشن یکبار تست کنید همه چیز رو.

همچنین اگر مشکلی دیدین بگین تا اصلاح کنم یا اگه راه ساده تری سراغ داشتین کامنت کنین شاید بقیه استفاده کنند.

امسال چون قانون ساعت تغییر کرده باید مراقب سرورها باشیم چون طبق آخرین آپدیت در زمان نوشتن این پست هنوز سیستم ها از این موضوع با خبر نشده اند.

از اونجایی که این مطلب برای عموم کاربران نیست توضیح اضافی هم نمیدم.

احتمالا در این زمان باقی مونده آپدیتی برای tzdata که مسئول کنترل این تغییرات هست نمیاد بنابراین باید خیلی ساده خودمون یک نسخه کاستوم بسازیم و مشکل رو حل کنیم.

برای این کار در سیستم های Unix مثل Linux و BSD و Mac و ... کافیه یک فایل Zone data با مشخصات مورد نظر خودمون ایجاد کنیم.

فایل های رسمی از این آدرس قابل دسترسی هستند. من فقط یک خط به آخرین ردیف اضافه کردم و مقدار DST در تاریخ ۲۰ مارچ رو به صفر تغییر دادم.

پس فایل اصلی:

# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Iran 2088 max - Mar 20 24:00 1:00 - Rule Iran 2088 max - Sep 20 24:00 0 -
# Zone NAME STDOFF RULES FORMAT [UNTIL] Zone Asia/Tehran 3:25:44 - LMT 1916 3:25:44 - TMT 1946 # Tehran Mean Time 3:30 - +0330 1977 Nov 4:00 Iran +04/+05 1979 3:30 Iran +0330/+0430

فایل کاستوم شده:

# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S Rule Iran 2088 max - Mar 20 24:00 0 - Rule Iran 2088 max - Sep 20 24:00 0 -
# Zone NAME STDOFF RULES FORMAT [UNTIL] Zone Asia/Tehran 3:25:44 - LMT 1916 3:25:44 - TMT 1946 # Tehran Mean Time 3:30 - +0330 1977 Nov 4:00 Iran +04/+05 1979 3:30 Iran +0330/+0430 2022 3:30 Iran +0330

این فایل را با یک نام دلخواه مثل Tehran2022 ذخیره می کنیم.

حالا ابتدا فایل مسیر /etc/localtime که یک لینک به فایل اصلی هست رو پاک می کنیم.

با دستور zic فایل timezone جدید را جایگزین می کنیم.

zic Tehran2022

سپس لینک را مجددا برقرار می کنیم. معمولا مسیر همین هست ولی اگر نبود حتما شما میدونید OS خودتون فایل های timezone ش کجاست دیگه!

ln -s /usr/share/zoneinfo/Asia/Tehran /etc/localtime

بعد از این باید ساعت سیستم به درستی تنظیم شده باشه و البته در روز ۱ فروردین ۱ ساعت جلو نمیره دیگه.

در طی این مراحل اگر جایی احساس کردین نیاز به تنظیمات پیش فرض هست یک بکاپ از آخرین آپدیت دارین که به این شکل برگردونده میشه. ممکنه بعدش ساعت سیستم به درستی اصلاح نشه که باید لینک رو پاک کنید و مجددا لینک کنین. (معمولا بلافاصله میشه)

zic /usr/share/zoneinfo/tzdata.zi

اگر کانتینرها یا دیتابیس یا هرچیز دیگه ای از تنظیمات زمان OS استفاده نمی کرد حواستون به اونها هم باشه.

گودلاک گایز

timezoneساعت رسمیutc
Just another developer!
شاید از این پست‌ها خوشتان بیاید