چگونه با استفاده از ntp یک بروزرسانی ساعت را مجبور کنیم؟


به جواب پذیرفته شده بروید




من اوبونتو را روی سیستم تعبیه شده مبتنی بر ARM اجرا می کنم که فاقد باتری RTC است. زمان بیدار شدن در جایی در طول 1970 است. بنابراین ، من از سرویس NTP برای به روزرسانی زمان به زمان فعلی استفاده می کنم.

خط زیر را به /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 ; date
Thu 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 ؟


382









16 :تعداد پاسخها


احتمالاً ntp سرویس در حال اجراست ، به همین دلیل ntpdate نمی توانید سوکت (پورت 123 UDP) را باز کنید و به سرور ntp وصل شوید.

از خط فرمان استفاده کنید:

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

اگر می خواهید /etc/rc.local از این موارد استفاده کنید:

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

327



به جای ntpdate (که توصیه )، استفاده از

 sudo service ntp stop
sudo ntpd -gq
sudo service ntp start
 

این -gq خطاب به ntp می گوید که زمان را بدون در نظر گرفتن جبران ( g ) تنظیم کرده و بلافاصله q پس از تنظیم زمان ، از آن خارج شوید .


495



از sntp برای تنظیم سریع زمان استفاده کنید. مثلا:

 sudo sntp -s 24.56.178.140
 

اعداد پس از هر سرور ntp می تواند باشد ، که یکی NIST در Ft است. کالینز ، کلرادو.


63



همانطور که دیگران اظهار داشتند بهترین راه حل این است که به ntpd دستور دهید تا آستانه هراس را نادیده بگیرد ، که به طور پیش فرض 1000 ثانیه است. می توانید آستانه وحشت را به یکی از دو روش پیکربندی کنید:

  • ویرایش /etc/default/ntp و اطمینان حاصل کنید که گزینه -g در دسترس است.
  • ویرایش /etc/ntp.conf و tinker panic 0 در قسمت بالا قرار دهید

تاکنون این اساساً همان چیزی است که دیگران توصیه کرده اند ، اما یک قدم دیگر وجود دارد که فکر می کنم باید انجام دهید. برنامه جعلی ساعت را نصب کنید:

 # apt-get install fake-hwclock


fake-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 است. هنگامی که دستگاه شما بوت می شود ، ساعت خود را به زمان جعلی ساعت تنظیم شده در آخرین راه اندازی مجدد / خاموش تنظیم می کند. این بدان معنی است که در صورت بروز مشکلات شبکه می توانید یک ساعت تا حدودی درست داشته باشید.


40


2014-04-03

ntpdate برنامه ای متفاوت از dameon خالص است. NTPDate احتمالاً در حال خراب شدن است زیرا ntpd در آن سوکت کار می کند.

از خط فرمان ، اجرا کنید

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

همچنین می توانید ntpd را با هم حذف کنید (apt-get remove ntp) و اضافه کردن یک اسکریپت cron برای استفاده از ntpdate هر ساعت یا بیشتر.

به روز رسانی

سرویس ntp احتمالاً برای شما در این سیستم ارزش معنی داری نخواهد داشت ، بنابراین ابتدا آن را حذف کنید.

 # sudo apt-get remove ntp
 

اکنون دستور را اضافه کنید:

 ntpdate -sb time.nist.gov
 

به /etc/rclocal

راه اندازی مجدد باید در آن نقطه خوب باشد.


13



timedatectl برای تنظیم زمان از (واحد خدمات systemd) استفاده کنید. ntp مستهلک می شود

 sudo systemctl restart systemd-timesyncd.service
 

می توانید با خواندن گزارش های مربوط به زمان به روزرسانی کنید journalctl -xe | tail

ارجاع


13



 rdate -s tick.greyware.com
 

اگر تنها کاری که می خواهید انجام دهید این است که ساعت را یک بار ، ساده تنظیم کنید


10



روش صحیح انجام این کار در سیستم Debian / Mint / Ubuntu (یا سایر مشتقات Debian) داشتن خط

 NTPD_OPTS="-g"
 

در پرونده

 /etc/default/ntp
 

این تضمین می کند که هنگام شروع ntpd از اسکریپت /etc/init.d/ntp ، با گزینه "-g" اجرا شود ،

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

به ntpd اجازه می دهد تا زمان سیستم را بیش از 1000 ثانیه انجام دهد ، زمان سیستم را تصحیح کند ، به عنوان مثال وقتی زمان سیستم در تاریخ اول ژانویه 1970 باشد ، زیرا RTC سخت افزاری وجود ندارد.


7



tlsdate ساعت محلی را با اتصال ایمن با TLS به سرورهای از راه دور و استخراج زمان از راه دور از دستی مطمئن تنظیم می کند. برخلاف ntpdate ، tlsdate از TCP استفاده می کند ، به عنوان مثال اتصال به یک سرویس از راه دور HTTPS یا فعال TLS ، و محافظت در برابر دشمنانی که سعی می کنند اطلاعات زمان خراب را به شما ارائه دهند ، محافظت می کند.

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

5



توجه داشته باشید که برخی از سیستم های مبتنی بر اوبونتو اکنون حتی به طور پیش فرض از سرویس NTP استفاده نمی کنند. در دستگاه من لینوکس نعنا 19 (اوبونتو 18.04) مدت زمان توسط شما نگه داشته می شود systemd-timesyncd .

بنابراین برای به دست آوردن زمان به روز پس از همگام سازی از دست داده ، من فقط اجرا می شود

 sudo systemctl restart systemd-timesyncd
 

از 15.04 اوبونتو به طور پیش فرض از systemd استفاده می کند. بنابراین سیستمهای حساس مانند زمان از طریق سیستم مدیریت می شوند. برای پیدا کردن سیستم شما از چه خدماتی استفاده می کند مانند چیزی را اجرا کند

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

برای TechJS در تاریخ 16.04 سرویس بود ntp . برای خودم در اوبونتو 18.04 (نعنا 19) خدمات ارائه شده است systemd-timesyncd . جالب اینجاست که من به یک سرور 16.04 که هستم وارد شده ام و از آن استفاده systemd-timesyncd می کند.


5



-b برای قدم گذاشتن زمان ، از گزینه استفاده کنید .


4



خوب،

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

ابتدا بررسی کنید که ntpdate بسته را با اجرا دارید

 sudo apt-get update
sudo apt-get install ntpdate
 

باید موارد زیر را به موارد زیر اضافه کنید /etc/network/interfaces (مطمئناً eth0 در اینجا فقط یک مثال است):

 auto eth0
    iface eth0 inet dhcp
    post-up /usr/local/sbin/update-time.sh
 

و اسکریپت زیر را در /usr/local/sbin/update-time.sh (ایجاد فراموش نکنید که آن را عملی کنید chmod ):

 #!/bin/bash
# This script checks if the ntp process is running, stops it, updates the system time, starts it again

ps cax | grep -c ntpd > /dev/null
onoff=$?
if [ "$onoff" -gt 0 ]; then
    echo "stopping ntpd..."
    service ntp stop
    echo "ntpd stopped"
else
    echo "ntpd not running, ready to update the date"
fi


isinstalled=$(dpkg-query -l | grep -c ntpdate)
if [ "$isinstalled" -gt 0 ]; then
    ntpdate -t 3 -s ntp4.stratum2.ru
    echo "date and time update executed"
else
    echo "ntpdate package not installed, can't update using ntp"
fi

echo "restarting ntpd..."
service ntp start 
echo "ntpd running"
echo "printing current date and time:"
date

exit
 

2



الگوریتم های nppd جبران نمونه های نمونه بیش از 128 ms را دور می اندازد ، مگر اینکه فاصله ای که در طی آن هیچ مقدار [مقدار مطلق] جبران نمونه کمتر از 128 ms نیست از 900s فراتر رود. نمونه اول پس از آن ، مهم نیست که چه جبران شود ، ساعت را به زمان مشخص شده قدم می گذارد. در عمل ، این میزان زنگ نادرست را کاهش می دهد که در آن ساعت به خطا منجر می شود تا به صورت ناگهانی ناپدید شود.

به طور معمول ، ntpd از آنجا خارج می شود که جبران بیش از حد عقل باشد ، که به طور پیش فرض 1000 ثانیه است. این گزینه را می توان با گزینه -g خاموش کرد:

-g به طور معمول ، ntpd در صورت جبران بیش از حد عقل ، که به طور پیش فرض 1000 ثانیه است ، خارج می شود. اگر حد مجاز بهداشتی بر روی صفر تنظیم شود ، هیچ گونه اقدامات بهداشتی انجام نمی شود و هرگونه جبران قابل قبول است. این گزینه بیش از حد مجاز است و اجازه می دهد تا زمان بدون هیچ محدودیتی روی هر مقدار تنظیم شود. با این حال ، این فقط یک بار می تواند رخ دهد. پس از آن ، در صورت تجاوز از حد ، ntpd خارج می شود. این گزینه را می توان با گزینه -q استفاده کرد.

هر دو از http://doc.ntp.org/4.1.0/ntpd.htm

-جوناتان ناتاله


1



اگر می توانید زمان صبر کردن هر زمان از سیستم خود را قبل از همگام سازی سیستم اختصاص دهید ، می توانید از این ntp-wait دستور استفاده کنید :

 ntp-wait || exit -1 
# i believe this would exit the script if it fails, but not sure of ntp-wait return codes, learn this first.

echo Time is synced, go ahead with backup
tar
rsync etc.
 

1



اگر در سیستم هستید ، می توانید از این دستور استفاده کنید:

 sudo systemctl restart ntp
# or
sudo systemctl restart ntp.service
 

و سپس زمان در حدود 10-15 ثانیه به روز می شود.
تست شده در اوبونتو همسر 16.04


1



ntpd و ntpdate به طور پیش فرض با استفاده از درگاه محدود (UDP 123) اجرا شود. اگر پشت یک فایروال هستید ، ntpd هرگز کار نخواهید کرد ، اما ntpdate می توانید با -u گزینه کار کنید. به عنوان مثال: ntpdate -u 0.ubuntu.pool.ntp.org یا ntpdate -u time.nist.gov باید هر دو خوب کار کنند.


0



انتشارات مرتبط


چگونه به روز رسانی هسته را هنگام استفاده از بروزرسانی apt-get مجبور کنیم؟

چگونه برنامه ای را مجبور به تعطیل کنیم؟

چگونه اوبونتو را مجبور کنیم تا نمایشگر خارجی را تشخیص دهد؟

چگونه فایرفاکس را وادار کنیم که نسخه موبایل وب سایت ها را نشان دهد؟

چگونه می توان اوبونتو را مجبور کرد فقط از طریق VPN به اینترنت دسترسی پیدا کند و هنگام قطع ارتباط آن را غیرفعال کنیم؟

چگونه "بالا" را وادار کنیم تا مقادیر قابل خواندن انسان را برای٪ MEM RES و VIRT نشان دهد

چگونه می توان به روزرسانی همزمان / هماهنگ سازی ساعت / ntp فوری در ساعت 16.04 را مجبور کرد؟

نحوه مجبور کردن زیرنویس ها در VLC برای نمایش در پایین [بسته]

نحوه مجبور کردن کاربر برای اجرای مسابقه پس از ورود به سیستم و قبل از نمایش دسک تاپ

چند بار باید با استفاده از بروزرسانی apt-get بروزرسانی کنم؟

[ntp] سوال برچسب


نحوه لیست تمام بسته های نصب شده

چگونه یک فایل زیپ را از ترمینال جدا کنیم؟

امکان قفل کردن پوشه مدیریت (/ var / lib / dpkg /) وجود ندارد فرآیند دیگری است که از آن استفاده می کند؟

دستورالعمل لیست تمام کاربران؟ و چگونه کاربران را اضافه ، حذف ، اصلاح کنیم؟

چگونه می توان از یک ترمینال خاموش یا راه اندازی مجدد کرد؟

چگونه می توانم از docker بدون سودو استفاده کنم؟

چگونه می توانم با استفاده از ترمینال ، محتوای پوشه را در پوشه دیگری در یک پوشه دیگر کپی کنید؟

پیام خطا "sudo: قادر به برطرف کردن میزبان (هیچ)"

چگونه یک دایرکتوری به PATH اضافه کنیم؟