كيفية استخدام الأمر timedatectl على Linux

لينكس timedatectl يتيح لك الأمر ضبط الوقت والتاريخ والمنطقة الزمنية لساعة النظام والساعة الفعلية. خذ دقيقة وسنوضح لك كيفية عمل كل ذلك.




كل شيء نسبي

إن طريقة تعامل جهاز الكمبيوتر الخاص بك مع الوقت هي إحدى تلك الأشياء التي قد تتوقع أن تكون واضحة ومباشرة. على الأقل، حتى تبدأ في البحث عنها.

تحسب ساعة نظام Linux عدد الثواني منذ عصر Unix. كان ذلك في الساعة 00:00:00 في 1 يناير 1970، بتوقيت UTC. يشير UTC إلى التوقيت العالمي المنسق، ولكن يُقال عنه عادةً أنه توقيت عالمي منسق أو مجرد توقيت عالمي. هذا هو معيار الوقت الذي يدير به العالم الوقت وينظمه. تطبق المناطق الزمنية المختلفة إزاحة على UTC للحصول على وقتها المحلي. بعض المناطق الزمنية تسبق UTC والبعض الآخر متأخر عنه.

تعتمد ساعة النظام في أجهزة الكمبيوتر التي تعمل بنظام Linux على البرامج. ومن الواضح أنها لا تعمل عندما يكون الكمبيوتر متوقفًا عن التشغيل. وهناك ساعة أخرى، وهي ساعة الوقت الحقيقي التي تعتمد على البطارية، قادرة على العمل عندما يكون الكمبيوتر متوقفًا عن التشغيل. والغرض منها هو إخبار ساعة النظام بالوقت عند تشغيل Linux. ما لم يكن الوصول إلى خادم بروتوكول وقت الشبكة (NTP) ممكنًا.


خوادم NTP هي خوادم توفر معلومات دقيقة عن الوقت لأجهزة الكمبيوتر التي تطلبها. إذا قمت بتشغيل جهاز الكمبيوتر أو الكمبيوتر المحمول ولم يكن هناك اتصال بالإنترنت – أو لم يتم الاتصال به تم تكوينه لاستخدام خوادم NTP—يتم استخدام ساعة الوقت الحقيقي لتحضير ساعة النظام بدلاً من خادم NTP.

تكون ساعة النظام دائمًا بتوقيت UTC. أي تطبيق يحتاج إلى الحصول على الوقت المحلي يحتاج إلى:

  • الوصول إلى ساعة النظام والحصول على UTC
  • تعرف على المنطقة الزمنية التي تقع فيها وقم بتطبيق الإزاحة الصحيحة
  • ضع في الاعتبار ما إذا كان التوقيت الصيفي ساري المفعول

يتم التحويل من التوقيت العالمي المنسق إلى التوقيت المحلي بواسطة التطبيق، وليس ساعة النظام. أو بشكل أكثر دقة، يتم التحويل بواسطة مكتبات الوقت والتاريخ التي يرتبط بها التطبيق. لهذا السبب من الضروري أن يعرف جهاز الكمبيوتر الخاص بك المنطقة الزمنية التي يقع فيها، وتوقيت التوقيت العالمي المنسق، وعدد الثواني التي مرت منذ عصر يونكس، وما إذا كان التوقيت الصيفي ساريًا.


في توزيعات Linux المستندة إلى systemd، نستخدم timedatectl أمر لرؤية أو تغيير تلك الإعدادات والقيم.

البدء باستخدام timedatectl

لرؤية البيانات الحالية والوقت والقيم الأخرى، استخدم timedatectl الأمر مع عامل الحالة.

timedatectl status

الناتج من أمر tidedatectl باستخدام عامل الحالة

في الواقع، يمكنك إسقاط الحالة وسوف تحصل على نفس النتيجة.

timedatectl

الناتج من أمر timedatectl بدون عامل

تُظهر كلا المجموعتين من المخرجات:


  • التوقيت المحلي:الوقت الذي يعتقده الكمبيوتر، وفقًا لمنطقته الزمنية.
  • التوقيت العالمي:توقيت UTC.
  • وقت RTC:الوقت الذي تستخدمه ساعة الوقت الحقيقي. عادةً ما يكون هذا هو التوقيت العالمي المنسق (UTC).
  • المنطقة الزمنية:معلومات بخصوص المنطقة الزمنية المحددة.
  • تمت مزامنة ساعة النظام:ما إذا كانت ساعة النظام متزامنة مع خادم NTP.
  • خدمة NTP:ما إذا كانت خدمة NTP الخاصة بالكمبيوتر نشطة.
  • RTC في TZ المحلية:ما إذا كانت الساعة في الوقت الحقيقي تستخدم الوقت المحلي بدلاً من UTC.

يمكنك رؤية عدد المناطق الزمنية timedatectl يدعم الأمر عن طريق الكتابة:

timedatectl list-timezones | wc -l

حساب المناطق الزمنية في timedatectl

هذا أكثر بكثير مما هو موجود المناطق الزمنية في العالمإذا قمنا بتوجيه الإخراج إلى grep وتصفية الإدخالات الخاصة بـ “أمريكا” ووضعها في lessيمكننا التمرير خلال قائمة أكثر قابلية للإدارة.


timedatectl list-timezones | grep "America/" | less

تصفية المناطق الزمنية الأمريكية باستخدام grep

عند مراجعة هذه القائمة، ستلاحظ أن كلمة “أمريكا” تحمل أوسع معنى ممكن. والشيء الثاني الذي ستلاحظه هو أن معظم الإدخالات ليست مناطق زمنية فعلية.

"امريكي" قائمة المناطق الزمنية في أقل

ضبط المنطقة الزمنية

إذا نظرت إلى القائمة غير المفلترة للمناطق الزمنية التي يدعمها timedatectl سترى أماكن بالإضافة إلى مناطق زمنية. لتعيين منطقة زمنية، يمكنك تحديدها بالاسم مثل EST أو GMT، أو يمكنك اختيار موقع في نفس المنطقة الزمنية التي تعيش فيها، مثل لندن أو نيويورك.


إن إعادة ضبط منطقتك الزمنية ليست أمرًا ستفعله كثيرًا، ولكن ربما انتقلت إلى منزل جديد أو تعمل بعيدًا عن المنزل لفترة من الوقت وترغب في تحديد موقع الكمبيوتر المحمول. إذا كنت بحاجة إلى إعادة ضبط منطقتك الزمنية، فاختر موقعًا في المنطقة الزمنية التي تريد استخدامها.

سنضبط هذا الكمبيوتر على التوقيت الجبلي، وهو نفس المنطقة الزمنية لمدينة إدمونتون. وسنرى بعد ذلك كيف تغيرت الإعدادات.

timedatectl set-timezone "America/Edmonton"

timedatectl

منطقة زمنية جديدة وإعدادات الوقت

لقد تغيرت منطقتنا الزمنية، وتغير وقتنا المحلي، وزاد انحرافنا عن توقيت UTC.


الضبط اليدوي للوقت والتاريخ

على الرغم من إمكانية ضبط الوقت والتاريخ يدويًا، إلا أنك لن تحتاج إلى ذلك عادةً. يُعد استخدام مزامنة الوقت وبروتوكول NTP الطريقة المفضلة للحفاظ على دقة الوقت والتاريخ على جهاز الكمبيوتر الخاص بك. إذا حاولت تغيير التاريخ أو الوقت على جهاز الكمبيوتر الخاص بك، فمن المحتمل أن تتلقى خطأً يخبرك بأن مزامنة الوقت قيد الاستخدام.

timedatectl set-time 10:30:00

لا يمكنك ضبط الوقت إذا كان مزامنة الوقت سارية المفعول

استخدم هذا الأمر لإيقاف تشغيل خدمة مزامنة الوقت:

sudo systemctl stop systemd-timesyncd.service

يمكنك ضبط الوقت أو التاريخ أو كليهما باستخدام timedatectl عامل ضبط الوقت. تكون التواريخ بترتيب السنة والشهر واليوم YYY-MM-DD، ويكون الوقت بترتيب الساعات والدقائق والثواني HH:MM:SS. سنقوم بتعيين الوقت والتاريخ باستخدام هذا الأمر:

timedatectl set-time "2022-01-30 10:30:00"


سوف نتحقق بعد ذلك من حدوث التغييرات باستخدام timedatectl.

timedatectl

ضبط الوقت والتاريخ يدويًا

لقد تغير التاريخ والوقت. لاحظ أيضًا أن الكمبيوتر يستخدم توقيت UTC خاطئًا. كما تم إعلامنا أيضًا بعدم مزامنة ساعة النظام وأن خدمة NTP غير نشطة.

إذا كان لديك وصول إلى الإنترنت، فبمجرد استعادة خدمة مزامنة الوقت، سيتم استرداد الوقت وإعادة تعيين كافة التفاصيل بشكل صحيح.

sudo systemctl start systemd-timesyncd.service

timedatectl

إعادة تشغيل خدمة NTP واستعادة قيم الوقت الصحيحة


RTC: UTC أو LTZ؟

من الممكن ضبط ساعة الوقت الفعلي لديك على توقيت منطقتك الزمنية المحلية بدلاً من توقيت UTC، وهو أمر ممكن، ولكن لا يُنصح به. إذا أجريت هذا التغيير، فسترى تحذيرًا بشأن التأثيرات الوخيمة التي قد يخلفها هذا على نظامك في المستقبل.

السبب وراء عرض هذه الطريقة هو أنك قد تواجه جهازًا يواجه مشكلات غريبة مع إعدادات الوقت. وهذه هي الطريقة التي يمكنك بها إعادة ضبط ساعة الوقت الفعلي إلى التوقيت العالمي المنسق (UTC).

أولاً، سنحتاج إلى ضبطه على المنطقة الزمنية المحلية.

timedatectl set-local-rtc 1

ثم سنسأل timedatectl لمكانتها.

timedatectl

ضبط الساعة في الوقت الحقيقي على المنطقة الزمنية المحلية، والتحذير المصاحب لذلك

أعتقد أنهم أوضحوا مشاعرهم.


لاستعادة الساعة في الوقت الحقيقي إلى توقيت UTC، استخدم هذا الأمر:

timedatectl set-local-rtc 0

اضبطه وانسه

ما لم ترتكب خطأ أثناء تثبيت توزيع Linux الخاص بك، أو قمت بالانتقال، فعادةً لا يوجد سبب لتعديل إعدادات النظام والساعات في الوقت الفعلي.

اضبط ساعة النظام على منطقتك الزمنية، وساعة الوقت الحقيقي على UTC، وتأكد من أن نظامك يستطلع خادم بروتوكول وقت الشبكة. هذه هي الحالة الافتراضية بعد معظم عمليات التثبيت.

إذا تم ضبط كل شيء، فإن أنظمة الوقت في جهاز الكمبيوتر الخاص بك سوف تعتني بنفسها.

أضف تعليق