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

در این راهنما، به بررسی تنظیمات مربوط به زمان سرور می‌پردازیم.

دستورهای رایج زمان

برای مشاهده‌ی زمان سرور می‌توانید از دستور date استفاده کنید. این دستور نیاز به دسترسی و Permission خاصی ندارد.

خروجی این دستور معمولن در Timezone پیش‌فرض یا UTC نمایش داده می‌شود.

UTC زمان هماهنگ جهانی یا زمان در طول جغرافیایی صفر درجه است. اگرچه UTC ممکن است منطقه‌ی زمانی فعلی شما نباشد، استفاده از آن زمانی که زیرساخت شما چندین منطقه زمانی را در بر می‌گیرد، از اختلال جلوگیری می‌کند.

اگر می‌خواهید منطقه‌ی زمانی خود را تغییر دهید، می‌توانید از دستور timedatectl استفاده کنید.

ابتدا این دستور را اجرا کنید تا لیستی از مناطق زمانی موجود را دریافت کنید:

timedatectl list-timezones

در خروجی، لیستی از Timezoneها به شما نمایش داده می‌شود که می‌توانید با دکمه‌ی Space به صفحات پایین‌تر رفته، با b بالاتر رفته و با q از این لیست خارج شوید.

اکنون می‌توانید منطقه‌ی زمانی دل‌خواهتان را بر اساس آن‌چه که در لیست پیدا کرده‌اید، تنظیم کنید. برای ایجاد این تغییر باید از sudo استفاده کنید:

sudo timedatectl set-timezone Asia/Tehran

با اجرای دوباره‌ی دستور date می‌توانید از اعمال شدن تنظیمات‌تان مطمین شوید:

تنظیم timesyncd با timedatectl

پیش از این، بیش‌تر همگام‌سازی‌های زمان در شبکه توسط ntpd انجام می‌شد. این سرویس به مجموعه‌ای از سرورهای NTP دیگر متصل می‌شود و به‌روزرسانی‌های زمانی ثابت و دقیق را در اختیار آن قرار می‌دهند.

اکنون با نصب پیش فرض Ubuntu، می‌توانید به جای ntpd از timesyncd استفاده کنید. timesyncd با اتصال به سرورهای یکسان مانند ntpd کار می‌کند، اما سبک‌وزن‌تر است و یکپارچگی بیش‌تری با systemd در Ubuntu دارد.

با اجرای دستور زیر می‌توانید وضعیت timesyncd را بررسی کنید:

timedatectl

این دستور زمان محلی، زمان جهانی (که ممکن است اگر از منطقه زمانی UTC تغییر مکان نداده‌ باشید، همان زمان محلی باشد) و برخی اطلاعات وضعیت زمان شبکه را نمایش می‌دهد.

‍‍System clock synchronized: yes به این معناست که زمان به‌درستی همگام شده است و NTP service: active نیز به معنای فعال بودن timesyncd است.

اگر خروجی، نشان‌دهنده‌ی فعال نبودن سرویس NTP بود می‌توانید با استفاده از دستور زیر آن را فعال کنید:

sudo timedatectl set-ntp on

استفاده از ntpd

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

قبل از نصب ntpd، باید timesyncd را خاموش کنید تا از تداخل این دو سرویس با یک‌دیگر جلوگیری کنید. می‌توانید این کار را با دستور زیر انجام دهید:

sudo timedatectl set-ntp no

برای اطمینان یک بار دستور زیر را اجرا کنید:

timedatectl

در خروجی باید مقدار NTP service: inactive را ببینید.

 

ابتدا apt را به‌روز می‌کنیم:

sudo apt update

سپس با دستور زیر ntp را نصب می‌کنیم:

sudo apt install ntp

بعد از تکمیل فرآیند نصب، ntpd به‌شکل خودکار شروع به کار می‌کند. برای بررسی این مورد می‌توانید از دستور زیر استفاده کنید:

ntpq -p

ntpq یک ابزار کوئری برای ntpd است. فلگ p- اطلاعاتی را درباره سرورهای NTP که ntpd به آن متصل است درخواست می کند.