أنا تشغيل أوبونتو على نظام جزءا لا يتجزأ من أرم التي تفتقر إلى بطارية المدعومة رتك. وقت الاستيقاظ في مكان ما خلال عام 1970. وبالتالي ، يمكنني استخدام خدمة نتب لتحديث الوقت إلى الوقت الحالي.
أضفت السطر التالي إلى /etc/rc.local الملف:
sudo ntpdate -s time.nist.gov
ومع ذلك ، بعد بدء التشغيل، لا يزال يستغرق بضع دقائق حتى يتم تحديث الوقت ، وخلال هذه الفترة لا أستطيع العمل بفعالية مع tar و make.
كيف يمكنني فرض تحديث الساعة في أي وقت?
تحديث 1: ما يلي (بفضل إريك وستيفان) يعمل بشكل جيد من سطر الأوامر ، لكنه يفشل في تحديث الساعة عند وضعها /etc/rc.local:
$ date ; sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start ; dateThu Jan 1 00:00:58 UTC 1970 * Stopping NTP server ntpd [ OK ] * Starting NTP server [ OK ] Thu Feb 14 18:52:21 UTC 2013
ماذا أفعل خطأ?
تحديث 2: حاولت اتباع بعض الاقتراحات التي جاءت ردا على التحديث 1 ، ولكن لا شيء يبدو أن تفعل في الواقع المهمة كما هو مطلوب. وهنا ما حاولت:
استبدال الخادم إلى us.pool.ntp.org
استخدم مسارات صريحة للبرامج
إزالة ntp خدمة تماما وترك فقط sudo ntpdate ... في rc.local
إزالة sudo من الأمر أعلاه في rc.local
باستخدام ما سبق ، لا يزال الجهاز يبدأ في عام 1970. ومع ذلك ، عند القيام بذلك من سطر الأوامر بمجرد تسجيل الدخول (عبر ssh) ، يتم تحديث الساعة بمجرد استدعاء ntpdate.
وكان آخر شيء فعلته لإزالة ذلك من rc.local وإجراء مكالمة إلى ntpdate في بلدي .bashrc الملف. هذا لا تحديث على مدار الساعة كما هو متوقع ، وأحصل على الوقت الحالي الحقيقي مرة واحدة موجه الأوامر هو متاح.
ومع ذلك، هذا يعني أنه إذا تم تشغيل الجهاز ولم يتم تسجيل دخول أي مستخدم ، فلن يحصل الوقت أبدا على التحديثات. يمكنني ، بالطبع ، إعادة تثبيت ntp الخدمة حتى يتم تحديث على الأقل على مدار الساعة في غضون بضع دقائق من بدء التشغيل ، ولكن بعد ذلك نعود في ساحة 1.
لذلك ، هل هناك سبب لماذا وضع ntpdate القيادة في rc.local لا يؤدي المهمة المطلوبة ، أثناء القيام بذلك في .bashrc يعمل بشكل جيد?
استخدام سنتب لضبط الوقت على الفور. بعض الأمثلة من صفحة الرجل:
USAGE sntp ntpserver.somewhere is the simplest use of this program and can be run as an unprivileged command to check the current time and error in the local clock. sntp -Ss -M 128 ntpserver.somewhere With suitable privilege, run as a command or from a cron(8) job, sntp -Ss -M 128 ntpserver.somewhere will request the time from the server, and if that server reports that it is synchronized then if the offset adjustment is less than 128 milliseconds the correction will be slewed, and if the correction is more than 128 milliseconds the correction will be stepped. sntp -S ntpserver.somewhere With suitable privilege, run as a command or from a cron(8) job, sntp -S ntpserver.somewhere will set (step) the local clock from a synchronized specified server, like the (dep‐ recated) ntpdate(8), or rdate(8) commands.
أنها تعمل مع أي خادم الوقت نتب. يمكن العثور على قائمة ملائمة للخوادم على ntppool.org.
كما أشار آخرون إلى أن أفضل حل هو توجيه نتبد لتجاهل عتبة الذعر ، وهو 1000 ثانية افتراضيا. يمكنك تكوين عتبة الذعر بإحدى طريقتين:
تحرير /etc/default/ntp وتأكد من أن الخيار ز موجود.
تحرير / الخ / نتب.أسيوط ومكان tinker panic 0 في الأعلى
حتى الآن هذا هو في الأساس ما أوصى به الآخرون ولكن هناك خطوة أخرى أعتقد أنه يجب عليك اتخاذها. تثبيت برنامج وهمية-هوكلوك:
# apt-get install fake-hwclockfake-hwclock: Save/restore system clock on machines without working RTC hardware Some machines don't have a working realtime clock (RTC) unit, or no driver for the hardware that does exist. fake-hwclock is a simple set of scripts to save the kernel's current clock periodically (including at shutdown) and restore it at boot so that the system clock keeps at least close to realtime. This will stop some of the problems that may be caused by a system believing it has travelled in time back to 1970, such as needing to perform filesystem checks at every boot. On top of this, use of NTP is still recommended to deal with the fake clock "drifting" while the hardware is halted or rebooting.
مع وهمية-هوكلوك تثبيت الجهاز الخاص بك لن تبدأ التفكير هو 1970 من جديد. عندما الأحذية الجهاز الخاص بك حتى أنه سيتم تعيين ساعته إلى الطابع الزمني وهمية-هوكلوك كتب خلال إعادة التشغيل / الاغلاق الماضي. هذا يعني أنه يمكنك الحصول على ساعة صحيحة إلى حد ما في حالة وجود مشكلات في الشبكة عند التمهيد.
لاحظ أن بعض الأنظمة القائمة على أوبونتو الحالية لا تستخدم حتى خدمة نتب افتراضيا الآن. على بلدي لينكس منت 19 (أوبونتو 18.04) آلة ، يتم الاحتفاظ الوقت من قبل systemd-timesyncd.
لذلك للحصول على ما يصل إلى تاريخ الوقت بعد أن فقدت المزامنة ، أنا فقط تشغيل
sudo systemctl restart systemd-timesyncd
منذ 15.04 أوبونتو يستخدم سيستيمد افتراضيا. لذلك يتم إدارة الأنظمة الحرجة مثل الوقت من خلال النظام. للعثور على الخدمة التي يستخدمها نظامك ، قم بتشغيل شيء مثل
بالنسبة للتقنيين على 16.04 كانت الخدمة ntp. لنفسي على أوبونتو 18.04 (النعناع 19) الخدمة systemd-timesyncd. ومن المثير للاهتمام ، لقد قمت بتسجيل الدخول إلى خادم 16.04 لدي ويستخدم systemd-timesyncd كذلك.
للسماح نتبد لتصحيح وقت النظام عندما يكون أكثر من 1000 ثانية خارج ، على سبيل المثال عندما يكون وقت النظام هو 1 يناير 1970 عند بدء التشغيل لأنه لا يوجد رتك الأجهزة.
tlsdate يضبط الساعة المحلية عن طريق الاتصال الآمن مع تلس إلى الخوادم البعيدة واستخراج الوقت البعيد من المصافحة الآمنة. على عكسntpdate, tlsdate يستخدم تكب ، على سبيل المثال الاتصال بخدمة تمكين هتبس أو تلس عن بعد ، ويوفر بعض الحماية ضد الخصوم التي تحاول تغذية لك معلومات الوقت الخبيثة.
لاحظ العلم '- ب ’ على نتبديت. من صفحة رجل نتبديت: "فرض الوقت ليتم صعدت باستخدام استدعاء النظام سيتيموفداي () ، بدلا من عدد كبير (الافتراضي) باستخدام استدعاء النظام أدجتيمي (). يجب استخدام هذا الخيار عند الاتصال من ملف بدء التشغيل في وقت التمهيد."العديد من الإجابات أدناه لا تتضمنها ، وربما جزء من المشكلة في تشغيل الأشياء. ضع في اعتبارك أن العلم ‘-ب’ يذكر أن الإزاحات التي تزيد عن 128 مللي ثانية يمكن أن تستغرق ساعات للمزامنة باستخدام آلية ‘العدد الكبير’ الافتراضية