كيفية فرض تحديث على مدار الساعة باستخدام نتب?

أنا تشغيل أوبونتو على نظام جزءا لا يتجزأ من أرم التي تفتقر إلى بطارية المدعومة رتك. وقت الاستيقاظ في مكان ما خلال عام 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 ، ولكن لا شيء يبدو أن تفعل في الواقع المهمة كما هو مطلوب. وهنا ما حاولت:

  1. استبدال الخادم إلى us.pool.ntp.org
  2. استخدم مسارات صريحة للبرامج
  3. إزالة ntp خدمة تماما وترك فقط sudo ntpdate ... في rc.local
  4. إزالة sudo من الأمر أعلاه في rc.local

باستخدام ما سبق ، لا يزال الجهاز يبدأ في عام 1970. ومع ذلك ، عند القيام بذلك من سطر الأوامر بمجرد تسجيل الدخول (عبر ssh) ، يتم تحديث الساعة بمجرد استدعاء ntpdate.

وكان آخر شيء فعلته لإزالة ذلك من rc.local وإجراء مكالمة إلى ntpdate في بلدي .bashrc الملف. هذا لا تحديث على مدار الساعة كما هو متوقع ، وأحصل على الوقت الحالي الحقيقي مرة واحدة موجه الأوامر هو متاح.

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

لذلك ، هل هناك سبب لماذا وضع ntpdate القيادة في rc.local لا يؤدي المهمة المطلوبة ، أثناء القيام بذلك في .bashrc يعمل بشكل جيد?

بدلا من نتبديت (وهو مهمل) ، استخدم ntpd:

sudo service ntp stopsudo ntpd -gqsudo service ntp start

ال -gq يخبر البرنامج الخفي نتب لتصحيح الوقت بغض النظر عن الإزاحة (g) والخروج على الفور (q) بعد تحديد الوقت.

ربما ntp الخدمة قيد التشغيل ، لهذا السبب ntpdate لا يمكن فتح المقبس (المنفذ 123 أودب) والاتصال بخادم نتب.

حاول من سطر الأوامر:

sudo service ntp stopsudo ntpdate -s time.nist.govsudo service ntp start

إذا كنت تريد وضع هذا في /etc/rc.local استخدم ما يلي:

( /etc/init.d/ntp stopuntil ping -nq -c3 8.8.8.8; do   echo "Waiting for network..."donentpdate -s time.nist.gov/etc/init.d/ntp start )&

استخدام سنتب لضبط الوقت على الفور. بعض الأمثلة من صفحة الرجل:

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.

تحتاج سودو الامتيازات ، على سبيل المثال:

sudo sntp -Ss -M 128 0.de.pool.ntp.org

استخدام timedatectl (وحدة خدمة سيستمد) لضبط الوقت. ntp تم إيقافه.

sudo systemctl restart systemd-timesyncd.service

يمكنك التحقق من الوقت الذي تم تحديثه بقراءة السجلات باستخدام journalctl -xe | tail.

الحالة مع timedatectl status والتكوين في /etc/systemd/timesyncd.conf.

المرجع

كما أشار آخرون إلى أن أفضل حل هو توجيه نتبد لتجاهل عتبة الذعر ، وهو 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 من جديد. عندما الأحذية الجهاز الخاص بك حتى أنه سيتم تعيين ساعته إلى الطابع الزمني وهمية-هوكلوك كتب خلال إعادة التشغيل / الاغلاق الماضي. هذا يعني أنه يمكنك الحصول على ساعة صحيحة إلى حد ما في حالة وجود مشكلات في الشبكة عند التمهيد.

نتبديت هو برنامج مختلف عن صافي داميون. نتبديت هو على الأرجح خطأ على التمهيد لأن نتبد يعمل على هذا المقبس.

من سطر الأوامر ، قم بتشغيل

# sudo service ntp stop ; sudo ntpdate -s time.nist.gov ; sudo service ntp start

يمكنك أيضا إلغاء تثبيت نتبد كل ذلك معا (الرابطة بين الحصول على إزالة نتب) وإضافة برنامج نصي كرون لاستخدام نتبديت كل ساعة أو نحو ذلك.

تحديث

خدمة نتب ربما لن يكون لها قيمة ذات مغزى بالنسبة لك على هذا النظام ، لذلك إزالة ذلك أولا.

# sudo apt-get remove ntp

الآن أضف الأمر:

ntpdate -sb time.nist.gov

إلى /etc/rclocal

إعادة التشغيل. يجب أن تكون جيدة في تلك المرحلة.

rdate -s tick.greyware.com

إذا كان كل ما تريد القيام به هو ضبط الساعة مرة واحدة ، بسيطة

لاحظ أن بعض الأنظمة القائمة على أوبونتو الحالية لا تستخدم حتى خدمة نتب افتراضيا الآن. على بلدي لينكس منت 19 (أوبونتو 18.04) آلة ، يتم الاحتفاظ الوقت من قبل systemd-timesyncd.

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

sudo systemctl restart systemd-timesyncd

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

systemctl list-unit-files | grep -E 'ntp|timesyncd'

بالنسبة للتقنيين على 16.04 كانت الخدمة ntp. لنفسي على أوبونتو 18.04 (النعناع 19) الخدمة systemd-timesyncd. ومن المثير للاهتمام ، لقد قمت بتسجيل الدخول إلى خادم 16.04 لدي ويستخدم systemd-timesyncd كذلك.

الطريقة الصحيحة للقيام بذلك على نظام ديبيان / مينت / أوبونتو (أو مشتق آخر من ديبيان) هي الحصول على الخط

NTPD_OPTS="-g"

في الملف

/etc/default/ntp

وهذا يضمن أنه عندما يتم بدء نتبد من / الخ / الحرف الأول.د / نتب النصي ، فإنه يعمل مع الخيار "- ز" ، بمعنى

 start-stop-daemon --start --quiet --oknodo --pidfile /var/run/ntpd.pid --startas /usr/sbin/ntpd -- -p /var/run/ntpd.pid -g -u 124:128

للسماح نتبد لتصحيح وقت النظام عندما يكون أكثر من 1000 ثانية خارج ، على سبيل المثال عندما يكون وقت النظام هو 1 يناير 1970 عند بدء التشغيل لأنه لا يوجد رتك الأجهزة.

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

$ tlsdate -V -n -H encrypted.google.com

من [هنا] 1:
التاريخ ntp.ubuntu.com`

لاحظ العلم '- ب ’ على نتبديت. من صفحة رجل نتبديت: "فرض الوقت ليتم صعدت باستخدام استدعاء النظام سيتيموفداي () ، بدلا من عدد كبير (الافتراضي) باستخدام استدعاء النظام أدجتيمي (). يجب استخدام هذا الخيار عند الاتصال من ملف بدء التشغيل في وقت التمهيد."العديد من الإجابات أدناه لا تتضمنها ، وربما جزء من المشكلة في تشغيل الأشياء. ضع في اعتبارك أن العلم ‘-ب’ يذكر أن الإزاحات التي تزيد عن 128 مللي ثانية يمكن أن تستغرق ساعات للمزامنة باستخدام آلية ‘العدد الكبير’ الافتراضية

‘تيميداتكتل’ ، ولكن How to update system time behind a proxy? - Ask Ubuntu

ليست هناك حاجة لاستخدام سودو في /الخ/الصليب الأحمر.ملفات اللغة … انهم جميعا تشغيل بالفعل كجذر.