برای تغییر timezone لینوکس باید ابتدا آشنایی خوبی با دستورات لینوکس داشته باشید، در مقاله آموزش دستورات لینوکس به طور کامل نحوه کاربرد دستورات لینوکس را شرح دادیم. چند روش برای تغییر timezone لینوکس وجود دارد که سعی می‌کنیم بهترین روش‌ها را در این آموزش برای شما بیان کنیم، با ما همراه باشید. برای مشاهده تاریخ و ساعت لینوکس از دستور date می‌توانید در محیط ssh استفاده کنید. در بسیاری از مواقع بعد از نصب لینوکس به صورت پیش‌فرض لوکیشن انتخاب شده کشوری متفاوت با محل زندگی شماست و همین امر شما را در آینده برای بررسی‌هایی همچون لاگ سرور، تاریخ سیستم مدیریت محتوا و زمان تراکنش‌های وب سایتتان دچار مشکل خواهد کرد. پس توصیه می‌کنیم بعد از نصب لینوکس خود، اولین کاری که انجام دهید تنظیم و تغییر timezone لینوکس خودتان باشد.

یک روش مطمئن ایجاد تغییر منطقه زمانی سرور شماست، اطلاعات مربوط به مکان جغرافیایی سرور شما در فایل etc/localtime/ فراخوانی می‌شود پس اولین نکته دانستن مسیر فایل تنظیم زمان و تاریخ سرورتان هستش، حالا باید timezone سرور را توسط فایل نگه دارنده اصلی آن تنظیم کنید. فایل localtime در واقع یک سیمبلینک لینک به فایل اصلی هستش که در ادامه بازگو خواهیم کرد.
دایرکتوری اصلی تمامی اطلاعات مناطق جغرافیایی و ساعت بروز آن‌ها در مسیر زیر قرار دارد.
/usr/share/zoneinfo/
1
/usr/share/zoneinfo/


با رفتن در این مسیر باید کشور خود را انتخاب کنید، برای انتخاب ایران و شهر تهران باید به دنبال فایل زیر باشید.
/usr/share/zoneinfo/Asia/Tehran
1
/usr/share/zoneinfo/Asia/Tehran


حالا باید توسط دستور زیر فایل کنونی timezone سرور خودتان را پاک کنید.
rm -rf /etc/localtime
1
rm -rf /etc/localtime


سپس توسط دستور زیر، مسیر صحیح را جهت تغییر timezone لینوکس سرور خود وارد می‌کنیم.
ln -s /usr/share/zoneinfo/Asia/Tehran /etc/localtime
1
ln -s /usr/share/zoneinfo/Asia/Tehran /etc/localtime


خوب حالا باید تنظیم مربوطه رو برای سخت‌افزار سرور یا سیستم شخصی خودتان انجام بدید تا با تغییرات در عملکرد سرور از جمله ریبوت و یا خاموش روشن شدن سرور تغییرات پابرجا بماند.
Nano /etc/sysconfig/clock
1
Nano /etc/sysconfig/clock


حالا درون فایل مربوطه مقادیر زیر را قرا دهید و تغییرات را ذخیره کنید.
ZONE="Asia/Tehran" UTC=false ARC=false
1
2
3
ZONE="Asia/Tehran"
UTC=false
ARC=false


و در انتها با واردکردن دستور زیر تغییرات رو روی سخت‌افزار ذخیره می‌کنیم.
hwclock --systohc --localtime
1
hwclock --systohc --localtime


و برای اطمینان از انجام صحیح تغییر timezone لینوکس سرور، دستور hwclock را وارد نمایید.
در مواردی هم نیاز هستش تا بعد از تغییر timezone ساعت سرور را به صورت دستی یک‌بار تنظیم کنید برای این کار می‌توانید از دستور date با سوییچ s- به شکل زیر استفاده کنید.
date -s '2017-12-25 1256'
1
date -s '2017-12-25 1256'




خب در دستور بالا ما هم تاریخ رو و هم ساعت رو یک‌بار دستی ست می‌کنیم تا از این به بعد تاریخ رو صحیح دریافت کنیم چون در بعضی از مواقع مشاهده کردیم که این مشکل برای بعضی از دوستان وجود داشته بنابراین می‌توانید از این دستور استفاده کنید.
تغییر timezone لینوکس توسط پروتکل ntp

یکی دیگه از روش‌های تغییر timezone استفاده از پروتکل ntp هستش ntp مخفف کلمات network time protocol بوده و عملکرد این روش بدین صورت هستش که سرورهای بسیاری دقیق و زیادی در سراسر دنیا به منظور سینک کردن زمان در دسترس کاربران و سرورهای در حال فعالیت قرار داده شده‌اند که این سرورها به شکل دقیقی راه‌اندازی و کار می‌کنند و اختلاف زمانی آن‌ها بسیار کم هستش در این روش ما سرور رو به پروتکل متصلntp می‌کنیم و زمان دریافتی از سرورهای ntp انجام خواهد شد.
timedatectl set-time YYYY-MM-DD HH:MM:SS
1
timedatectl set-time YYYY-MM-DD HH:MM:SS


توسط دستور بالا می‌توانیم تاریخ و ساعت سرور را تنظیم کنیم، واضح هستش که نمادهای نوشته شده برای چه پارامترهایی هستند ولی برای آن دسته از کسانی که آگاهی ندارند یک‌بار این موارد رو سریع ذکر می‌کنیم.

HH : An hour MM : A minute SS : A second, all typed in two-digit form YYYY: A four-digit year MM : A two-digit month DD: A two-digit day of the month
1
2
3
4
5
6
HH : An hour
MM : A minute
SS : A second, all typed in two-digit form
YYYY: A four-digit year
MM : A two-digit month
DD: A two-digit day of the month



  • HH برای دو کاراکتر ساعت
  • MM برای دو کاراکتر دقیقه
  • SS برای دو کاراکتر ثانیه
  • YYYY برای چهار کاراکتر سال
  • MM برای دو کاراکتر ماه
  • DD برای دو کاراکتر روز

همچنین می‌توانیم تاریخ و ساعت رو به فرمت ورودی عددی وارد نکنیم و به صورت timezone جغرافیایی توسط دستور timedatectl اعمال کنیم.
'timedatectl set-timezone 'Asia/Tehran

1
'timedatectl set-timezone 'Asia/Tehran


خوب امیدوارم توانسته باشید با مطالعه و پیاده‌سازی این آموزش، تغییر timezone لینوکس سرور خودتان را به درستی انجام بدید تا در آینده به مشکل برنخورید.

منبع