تنظیم ساعت لینوکس

مقدمه:

تنظیم ساعت لینوکس یکی از مراحل پایه‌ای اما بسیار مهم در مدیریت سرور است که تأثیر مستقیمی بر عملکرد دقیق سیستم‌عامل، ثبت لاگ‌ها، اعتبار گواهی‌های 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 ساعت و تاریخ را به‌صورت دستی اصلاح کنید، احتمال دارد پس از مدتی دوباره این مشکل تکرار شود.

برای رفع دائمی این مشکل و جلوگیری از خطاهای مرتبط با زمان، باید مراحل زیر را انجام دهید:

  1. نصب Network Time (NTP):
    با نصب سرویس NTP می‌توانید ساعت سیستم را با ساعت جهانی به‌صورت خودکار همگام‌سازی کنید.

  2. تنظیم Time Zone موردنظر:
    پس از نصب NTP، باید منطقه زمانی (Time Zone) مناسب سرور خود را ست کنید تا ساعت دقیق منطقه شما نمایش داده شود.

  3. ریستارت سرویس 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

راهنمای کامل NTP در Arch Wiki 

تنظیمات تاریخ و ساعت به صورت دستی

داشتن زمان و تاریخ صحیح در لینوکس بسیار مهم است و عملکرد بسیاری از سرویس‌ها، لاگ‌ها، گواهی‌های امنیتی، و حتی زمان‌بندی وظایف سیستمی به آن وابسته است. فرقی نمی‌کند که از لینوکس روی یک کامپیوتر شخصی استفاده می‌کنید یا یک سرور مجازی یا اختصاصی در حال اجرا دارید—در هر حالت، تنظیم دقیق ساعت سیستم و سرور یکی از پیش‌نیازهای اصلی برای پایداری و امنیت است.

در ادامه، روش‌های مختلف تنظیم ساعت لینوکس در محیط‌های مختلف از جمله سرورهای مجازی و فیزیکی را بررسی خواهیم کرد.

تنظیمات تاریخ به صورت دستی

برای تنظیم تاریخ به صورت دستی از دستور زیر استفاده کنید. به ترتیب به جای 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 به شما کمک می‌کند تا سیستم شما پایدار، دقیق و امن باقی بماند.پیشنهاد می‌شود پس از هر نصب لینوکس یا راه‌اندازی سرور جدید، تنظیم ساعت و تاریخ را به‌عنوان یکی از مراحل اولیه پیکربندی انجام دهید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

خرید سرور مجازی

🔥 پربازدیدترین مطالب

دسته‌بندی

جدید‌ترین‌ها