فهرست محتوا
مقدمه:
تنظیم ساعت لینوکس یکی از مراحل پایهای اما بسیار مهم در مدیریت سرور است که تأثیر مستقیمی بر عملکرد دقیق سیستمعامل، ثبت لاگها، اعتبار گواهیهای SSL، اجرای وظایف زمانبندیشده (Cronjob) و هماهنگی با سایر سرویسهای شبکه دارد. اگر ساعت سیستم لینوکسی شما بهدرستی تنظیم نباشد، ممکن است با خطاهایی در اجرای اسکریپتها، ارسال ایمیل، یا احراز هویت روبهرو شوید.
در سرورهای مجازی (VPS) و اختصاصی، معمولاً نیاز است تنظیمات ساعت بهصورت دستی انجام شود یا از طریق پروتکل NTP (Network Time Protocol) همگامسازی گردد. در این مقاله، روشهای تنظیم ساعت در لینوکس (اوبونتو، دبیان، سنتاواس، راکی لینوکس و…) را بررسی کرده و نحوه استفاده از ابزارهایی مانند timedatectl
، ntp
و chrony
را بهصورت گامبهگام آموزش میدهیم.
بررسی وضعیت ساعت در لینوکس
قبل از شروع فرآیند تنظیم ساعت لینوکس، لازم است ابتدا بررسی کنیم که ساعت فعلی سیستم بهدرستی تنظیم شده یا خیر. برای این کار، میتوانید از دستور timedatectl
استفاده کنید که در اکثر توزیعهای مدرن لینوکس (مثل Ubuntu، Debian، CentOS 7 به بعد، AlmaLinux و Rocky Linux) در دسترس است.
دستور بررسی وضعیت ساعت سیستم:
timedatectl status
این دستور اطلاعاتی مانند موارد زیر را نمایش میدهد:
-
Local time: زمان محلی سرور
-
Universal time (UTC): ساعت جهانی
-
RTC time: ساعت سختافزاری سیستم
-
Time zone: منطقه زمانی تنظیمشده
-
NTP enabled: فعال یا غیرفعال بودن همگامسازی خودکار با NTP
-
System clock synchronized: مشخص میکند که آیا ساعت سیستم با سرورهای NTP هماهنگ است یا نه
اگر زمان ناهماهنگ بود چه کنیم؟
در صورتی که متوجه شدید ساعت سیستم دقیق نیست یا NTP غیرفعال است، باید نسبت به تنظیم ساعت لینوکس از طریق دستورات مناسب یا فعالسازی همگامسازی با NTP اقدام کنید. در ادامه، روشهای مختلف تنظیم ساعت را به شما آموزش میدهیم.
تنظیمات TimeZone در CentOS 7
گاهی اوقات ممکن است در سرورهای لینوکسی مشکل بههمریختگی ساعت و تاریخ مشاهده شود. حتی اگر با دستور date
ساعت و تاریخ را بهصورت دستی اصلاح کنید، احتمال دارد پس از مدتی دوباره این مشکل تکرار شود.
برای رفع دائمی این مشکل و جلوگیری از خطاهای مرتبط با زمان، باید مراحل زیر را انجام دهید:
-
نصب Network Time (NTP):
با نصب سرویس NTP میتوانید ساعت سیستم را با ساعت جهانی بهصورت خودکار همگامسازی کنید. -
تنظیم Time Zone موردنظر:
پس از نصب NTP، باید منطقه زمانی (Time Zone) مناسب سرور خود را ست کنید تا ساعت دقیق منطقه شما نمایش داده شود. -
ریستارت سرویس NTP:
در نهایت، سرویس NTP را ریستارت میکنید تا تغییرات اعمال شوند.
برای انجام این مراحل، کافی است دستورات زیر را بهترتیب و خطبهخط اجرا کنید.
yum install ntp ntpdate systemctl enable ntpd systemctl start ntpd ntpdate -u -s 0.centos.pool.ntp.org 1.centos.pool.ntp.org 2.centos.pool.ntp.org systemctl restart ntpd timedatectl set-timezone "Asia/Tehran" service ntpd restart
با اجرای آخرین کامند زیر تاریخ و ساعت سرور را مشاهده میکنید که به درستی تنظیم شدهاست.
date
تنظیمات تاریخ و ساعت به صورت دستی
داشتن زمان و تاریخ صحیح در لینوکس بسیار مهم است و عملکرد بسیاری از سرویسها، لاگها، گواهیهای امنیتی، و حتی زمانبندی وظایف سیستمی به آن وابسته است. فرقی نمیکند که از لینوکس روی یک کامپیوتر شخصی استفاده میکنید یا یک سرور مجازی یا اختصاصی در حال اجرا دارید—در هر حالت، تنظیم دقیق ساعت سیستم و سرور یکی از پیشنیازهای اصلی برای پایداری و امنیت است.
در ادامه، روشهای مختلف تنظیم ساعت لینوکس در محیطهای مختلف از جمله سرورهای مجازی و فیزیکی را بررسی خواهیم کرد.
تنظیمات تاریخ به صورت دستی
برای تنظیم تاریخ به صورت دستی از دستور زیر استفاده کنید. به ترتیب به جای y , m , d مقادیر سال و ماه و روز را در عبارت انتهای دستور وارد نمایید. مثلا برای تاریخ 2023/03/12 باید مقدار 20230312 را استفاده کنید
date +%Y%m%d -s "20230312"
تنظیمات ساعت به صورت دستی
برای تنظیم ساعت به صورت دستی از دستور زیر استفاده کنید. مقدار ساعت مورد نظر برای تنظیم را در دستور جایگزین نموده و اجرا کنید
date +%T -s "11:14:00"
نکته: میتوانید برای تنظیم صحیح ساعت از سایت time.ir استفاده نموده و مقدار ساعت را مطابق آن ست نمایید.
تنظیم ساعت و تاریخ در یک دستور
برای تنظیم تاریخ و ساعت به صورت همزمان در یک دستور، از دستور زیر استفادهکنید. مقادیر را در کد زیر جایگزین نموده و اجرا کنید.
date -s "19 APR 2012 11:14:00"
در نهایت برای بررسی ساعت و تاریخ، دستور زیر را باید استفاده کنید:
date
نکته: در مواردی که سرور قدیمی است و ورژن php پایین دارد، با روشهای فوق ساعت سرور ممکن است اصلاح شود ولی وقتی از کد php برای نمایش ساعت و تاریخ استفاده میکنید، مقدار نمایش دادهشده پس از اجرا صحیح نمیباشد.
برای این مورد از دستور زیر استفاده کنید
curl -s https://raw.githubusercontent.com/matiniamirhossein/bashscripts/main/cPanel-update-timezonedb-dst-fix.sh | bash
نمونه کد php برای نمایش ساعت و تاریخ
جهت اطمینان از صحت تنظیمات میتوانید یک فایل php در public_html هاست ایجاد نموده و یکی از کدهای زیر را در آن قرار دهید:
<?php date_default_timezone_set('Asia/Tehran'); $timestamp = time(); $date_time = date("d-m-Y (D) H:i:s", $timestamp); echo "Current date and local time on this server is $date_time"; ?>
یا کد زیر که شامل info مربوط به PHP هم میباشد تا بتوانید موارد مختلف را بررسی کنید:
<?php date_default_timezone_set("Asia/Tehran"); date_default_timezone_set('Iran'); echo "Today is " . date("Y/m/d") . " ->" . date("h:i:sa") . "<br>"; echo "Today is " . date("l"); phpinfo(); ?>
فایل را با پسوند php ذخیره نموده و با نام دامنه فایل را در مرورگر باز کنید. برای مثال اگر فایل را با نام time.php ذخیره کنید, با آدرس زیر میتوانید فایل را اجرا کنید:
http://domainname.com/time.php
توجه داشته باشید به جای domainname.com باید نام دامنه را قرار دهید.
تنظیمات Time Zone برای اوبونتو
بررسی منطقه زمانی فعلی
timedatectl یک ابزار خط فرمان است که به شما امکان میدهد زمان و تاریخ سیستم را مشاهده و تغییر دهید. این سیستم در تمام سیستمهای مدرن مبتنی بر سیستم عامل لینوکس، از جمله اوبونتو ۲۰٫۰۴ موجود است.
برای نشان دادن منطقه زمانی سیستم فعلی ، timedatectl
شده را بهتنهایی تایپ کنید:
timedatectl
خروجی زیر نشان میدهد که منطقه زمانی روی UTC تنظیم شده است:
Local time: Wed 2020-05-06 19:33:20 UTC Universal time: Wed 2020-05-06 19:33:20 UTC RTC time: Wed 2020-05-06 19:33:22 Time zone: UTC (UTC, +0000) System clock synchronized: yes NTP service: active RTC in local TZ: no
منطقه زمانی سیستم با همگام سازی / etc/localtime به یک شناسه منطقه زمانی باینری در فهرست /usr/share/zoneinfo پیکربندی شده است.
گزینه دیگر برای مشاهده منطقه زمانی سیستم فعلی ، یافتن پرونده ای که Simlink به آن اشاره دارد:
ls -l /etc/localtime
خروجی:
lrwxrwxrwx 1 root root 27 Dec 10 12:59 /etc/localtime -> /usr/share/zoneinfo/Etc/UTC
منطقه زمانی سیستم نیز به پرونده / etc / منطقه منطقه زمانی نوشته شده است:
cat /etc/timezone
خروجی:
UTC
تغییر منطقه زمانی با استفاده از فرمان timedatectl
قبل از تغییر منطقه زمانی ، باید نام طولانی منطقه زمانی را که می خواهید استفاده کنید پیدا کنید. مناطق زمانی از قالب “منطقه / شهر” استفاده می کنند.
برای لیست کردن تمام مناطق زمانی موجود ، می توانید پرونده ها را در فهرست / usr / share / zoneinfo لیست کنید یا با استفاده از گزینه لیست منطقه زمانی ، دستور timedatectl را فراخوانی کنید:
timedatectl list-timezones
خروجی:
... America/Montevideo America/Nassau America/New_York America/Nipigon America/Nome America/Noronha ...
پس از شناسایی منطقه زمانی دقیق در مکان خود ، دستور زیر را به عنوان کاربر sudo اجرا کنید:
sudo timedatectl set-timezone your_time_zone
به عنوان مثال ، برای تغییر منطقه زمانی منطقه به Asia/Tehran:
sudo timedatectl set-timezone Asia/Tehran
برای تأیید تغییرات ، از دستور timedatectl فراخوانی کنید:
timedatectl
خروجی:
Local time: Tue 2022-01-11 15:32:19 +0330 Universal time: Tue 2022-01-11 12:02:19 UTC RTC time: Tue 2022-01-11 12:02:19 Time zone: Asia/Tehran (+0330, +0330) System clock synchronized: no NTP service: active RTC in local TZ: no
تغییر ساعت و تاریخ به صورت دستی
در این روش ابتدا با کامند زیر می توانید تاریخ و زمان سرور را مشاهده کنید
date
با استفاده از دستور زیر می توانید بصورت دستی این کار را انجام دهید:
date -s "18 OCT 2022 18:00:00"
و یا از دستور زیر استفاده کنید:
date --set="18 OCT 2022 18:00:00"
در نهایت جهت بررسی مجدد تنظیمات, دستور date را اجرا کنید.
date
تنظیمات دستی از طریق ESXi
اگر متوجه تفاوت ساعت قابل توجهی بین ساعت یک سرور و بقیه اجزای vSphere شدید، ممکن است لازم باشد ابتدا زمان و تاریخ سرور را قبل از همگام سازی با سرور NTP یا PTP به صورت دستی تنظیم کنید.
قبل از هر چیز باید بررسی کنید که تنظیمات NTP و PTP در هاست استفاده نشده باشد.
سپس باید تنظیمات را به صورت Manual Set-Up انجام دهید:
برای انجام این کار باید در صفحه اصلی vSphere Client به Hosts and Cluster بروید. سرور را انتخاب کنید. در تب Configure، System > Time Configuration را انتخاب کنید. روی Manual Set-Up کلیک کنید. کادر محاوره ای پیکربندی زمان دستی ظاهر می شود. تاریخ و زمان را وارد کرده و روی OK کلیک کنید.
جمعبندی: اهمیت تنظیم ساعت لینوکس در سرورها
تنظیم ساعت لینوکس یک اقدام ساده اما حیاتی در مدیریت سیستمهای لینوکسی بهشمار میرود. عدم دقت در تنظیم زمان میتواند منجر به بروز مشکلات امنیتی، اختلال در اجرای وظایف زمانبندیشده (Cron)، ایجاد خطا در احراز هویتها، ناهماهنگی در لاگها و حتی بروز ارورهای گواهی SSL شود.
چه از لینوکس در محیط دسکتاپ استفاده میکنید و چه بر روی یک سرور مجازی یا اختصاصی کار میکنید، تنظیم دقیق ساعت سیستم از طریق ابزارهایی مانند timedatectl
، فعالسازی NTP یا استفاده از chrony
به شما کمک میکند تا سیستم شما پایدار، دقیق و امن باقی بماند.پیشنهاد میشود پس از هر نصب لینوکس یا راهاندازی سرور جدید، تنظیم ساعت و تاریخ را بهعنوان یکی از مراحل اولیه پیکربندی انجام دهید.