सवाल एनटीपी का उपयोग कर घड़ी अद्यतन को कैसे बल दें?


मैं उबंटू को एआरएम आधारित एम्बेडेड सिस्टम पर चला रहा हूं जिसमें बैटरी समर्थित आरटीसी की कमी है। जागने का समय 1 9 70 के दौरान कहीं भी है। इस प्रकार, मैं वर्तमान समय पर समय अपडेट करने के लिए एनटीपी सेवा का उपयोग करता हूं।

मैंने निम्नलिखित पंक्ति को जोड़ा /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. सर्वर को बदलें us.pool.ntp.org
  2. कार्यक्रमों के लिए स्पष्ट पथ का प्रयोग करें
  3. हटाए ntp सेवा पूरी तरह से और बस छोड़ दें sudo ntpdate ... में rc.local
  4. हटाए sudo उपरोक्त आदेश से rc.local

उपर्युक्त का उपयोग करके, मशीन अभी भी 1 9 70 से शुरू होती है। हालांकि, जब इसे लॉग इन करने के बाद कमांड लाइन से किया जाता है (के माध्यम से ssh), जैसे ही मैं आह्वान करता हूं, घड़ी को अपडेट किया जाता है ntpdate

आखिरी चीज मैंने इसे हटाने के लिए किया था rc.local और एक कॉल करने के लिए ntpdate मेरे में .bashrc फ़ाइल। यह अपेक्षित घड़ी को अपडेट करता है, और कमांड प्रॉम्प्ट उपलब्ध होने पर मुझे सही वर्तमान समय मिल जाता है।

तथापि, इसका मतलब है कि यदि मशीन चालू है और कोई उपयोगकर्ता लॉग इन नहीं है, तो समय कभी अपडेट नहीं मिलता है। मैं, निश्चित रूप से, पुनः स्थापित कर सकते हैं ntp सेवा ताकि कम से कम घड़ी स्टार्टअप से कुछ ही मिनटों में अपडेट हो, लेकिन फिर हम वापस वर्ग 1 पर वापस आ गए हैं।

तो, वहाँ रखने का एक कारण है ntpdate में आदेश rc.local ऐसा करने के दौरान, आवश्यक कार्य नहीं करता है .bashrc ठीक काम करता है?


325
2018-02-13 21:58


मूल


[यहां] [1] से: ntpdate -s ntp.ubuntu.com     [1]: askubuntu.com/a/81301/130162 - 18446744073709551615
ntpdate पर '-b' ध्वज नोटिस करें। एनटीपीडेट के मैन पेज से: "सेटटाइम () सिस्टम कॉल का उपयोग करके सेटटाइम () सिस्टम कॉल का उपयोग करके चरणबद्ध करने के लिए समय को बल दें (बूट) पर स्टार्टअप फ़ाइल से कॉल करने पर यह विकल्प इस्तेमाल किया जाना चाहिए।" नीचे दिए गए कई उत्तरों में इसे शामिल नहीं किया गया है, और शायद चीजों को काम करने में समस्या का हिस्सा हो सकता है। गौर करें कि '-बी' ध्वज यह उल्लेख करता है कि 128 एमएस से अधिक ऑफसेट को डिफ़ॉल्ट 'स्लेव' तंत्र का उपयोग करके सिंक करने में घंटों लग सकते हैं - Matt S.
उपयोग करने की कोई आवश्यकता नहीं है sudo /etc/rc.locale फाइलों में .. वे पहले ही रूट के रूप में चल रहे हैं। - Soren A


जवाब:


शायद ntp सेवा चल रही है, यही कारण है कि ntpdate सॉकेट (पोर्ट 123 यूडीपी) नहीं खोल सकता है और एनटीपी सर्वर से कनेक्ट कर सकता है।

कमांड लाइन से आज़माएं:

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 )&

285
2018-02-13 23:13



धन्यवाद। क्या आप कृपया स्पष्ट कर सकते हैं कि आपको स्पष्ट पथ क्यों चाहिए? - ysap
मैं वास्तव में नहीं जानता। :-) मुझे दौड़ने की कोशिश करने में परेशानी थी service rc.local और cron से लेकिन मैं इसके बजाय /etc/init.d/xxx का उपयोग करके इसे ठीक करने में कामयाब रहा। दरअसल मुझे लगता है कि आपको पूरा रास्ता नहीं देना है ntpdate, मुझे यह सुनिश्चित करने के लिए स्क्रिप्ट में पूर्ण पथ का उपयोग करना पसंद है कि सही फ़ाइल मिल जाएगी। - Eric Carvalho
ठीक है, यह स्पष्ट रूप से समस्या थी। नेटवर्क कनेक्शन स्थापित होने के तुरंत बाद घड़ी को अपडेट किया जा रहा है। धन्यवाद। - ysap
मुझे पता चला कि us.pool.ntp.org अधिक प्रतिक्रियाशील है। - ysap
उसके साथ -u विकल्प, आपको एनटीपी सेवा को रोकने की आवश्यकता नहीं है: sudo ntpdate -u time.nist.gov - Edward Anderson


Ntpdate के बजाय (जो है पदावनत), उपयोग

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

-gq ऑफसेट के बावजूद समय को सही करने के लिए एनटीपी डिमन को बताता है (g) और तत्काल बाहर निकलें (q) समय निर्धारित करने के बाद।


429
2018-02-14 12:32



धन्यवाद। इस आदेश के बाद भी 1 9 70 दिखा रहा है (डब्ल्यू / सुडो)। पढ़ना ntpd मैनपेज, मुझे यकीन नहीं है कि यह कैसे एक अद्यतन को मजबूर करता है? - ysap
"-Q" विकल्प एनटीपी डिमन को शुरू करने, समय निर्धारित करने और तुरंत बाहर निकलने के लिए कहता है। "-G" विकल्प इसे 1000 सेकंड के बाद बड़े अंतर के लिए सही करने की अनुमति देता है। लंबी अवधि के लिए, आपको हमेशा चलने के लिए एनटीपी डिमन को कॉन्फ़िगर करना चाहिए। - tgharold
यह उत्तर शीर्ष पर जाना चाहिए, क्योंकि यह सही है: ntpdate को बहिष्कृत किया गया है और इसे स्थापित करना एक बुरा विचार है, क्योंकि यह ntp के साथ संघर्ष करता है। अगर घड़ी बंद हो जाती है, तो आपको यह मैन्युअल कदम करने की ज़रूरत है क्योंकि अन्यथा एनटीपी आपकी घड़ी नहीं बदलेगी और आपको क्यों नहीं बताएगी। - Liam
मेरे लिए, sudo ntpd -gq बाहर नहीं निकलता है! मैं 14.10 पर हूं और मुझे जारी रखने के लिए CTRL + C करना है ... या इसे कब तक लेना है? - Yanick Rochon
एफवाईआई, मेरे सिस्टम (सेंटोस 6.6) पर, मुझे दो उदाहरणों को बदलने की जरूरत है sudo service ntp... सेवा मेरे sudo service ntpd...। - rinogo


तुरंत समय निर्धारित करने के लिए sntp का उपयोग करें। उदाहरण के लिए:

sudo sntp -s 24.56.178.140

बाद में संख्याएं एनटीपी टाइम सर्वर हो सकती हैं, वह एक फीट में एनआईएसटी है। कोलिन्स, कोलोराडो।


50
2017-11-08 01:00



वह काम किया! +1 - CappY
यह काम करता था जब "sudo ntpd -gq" नहीं था। - Matt White
मुझे नहीं पता कि मैं इस जवाब के लिए कितनी बार खोज कर आया हूं। हर समय काम करता है। - Chaos
पैकेज स्नैप का पता लगाने में असमर्थ? - temple
apt-get sntp / yum install sntp इंस्टॉल करें (हाँ यह CentOS, RedHat, fedore पर भी काम करता है) - ndemou


जैसा कि अन्य ने सबसे अच्छा समाधान बताया है कि पैनिक थ्रेसहोल्ड को अनदेखा करने के लिए ntpd को निर्देश देना है, जो डिफ़ॉल्ट रूप से 1000 सेकंड है। आप पैनिक थ्रेसहोल्ड को दो तरीकों से कॉन्फ़िगर कर सकते हैं:

  • संपादित करें /etc/default/ntp और सुनिश्चित करें कि -जी विकल्प मौजूद है।
  • /etc/ntp.conf और जगह संपादित करें tinker panic 0 शीर्ष पर

अभी तक यह अनिवार्य रूप से दूसरों ने सिफारिश की है, हालांकि एक और कदम है जो मुझे लगता है कि आपको लेना चाहिए। नकली-hwclock कार्यक्रम स्थापित करें:

# 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.

फर्जी-हॉकक्लॉक स्थापित करने के साथ आपकी मशीन 1 9 70 में फिर से सोचने लगती नहीं है। जब आपकी मशीन बूट हो जाती है तो यह घड़ी को आखिरी रीबूट / शट डाउन के दौरान टाइमस्टैम्प नकली-हॉकक्लॉक पर सेट करेगा। इसका मतलब यह है कि जब आप बूट करते हैं तो नेटवर्क समस्याएं होने पर आपको कुछ हद तक सही घड़ी मिल सकती है।


37
2018-04-03 22:11



-g मेरे लिए कुछ भी नहीं लग रहा था (कमांड लाइन पर, मेरे पास नहीं है /etc/default/ntp), लेकिन जोड़ना tinker panic 0 सेवा मेरे ntp.conf काम - Dave Cousineau
@Sahuagin मुझे नहीं पता कि आपके पास एक गैर मानक मानक एनटीपी पैकेज के अलावा आपको क्या कहना है। / etc / default / ntp उबंटू से पैकेज का हिस्सा है: packages.ubuntu.com/xenial/amd64/ntp/filelist और -g जब तक मैं याद कर सकता हूं तब तक एक विकल्प रहा है। - dfc
क्षमा करें, मुझे लगता है कि मैं वास्तव में उबंटू पर नहीं हूं और टिप्पणी करने से पहले थोड़ा और सोचना चाहिए था। tinker panic 0 ऐसा लगता है कि निश्चित रूप से काम किया है। - Dave Cousineau


ntpdate नेट डेमॉन से अलग एक प्रोग्राम है। एनटीपीडेट शायद बूट पर त्रुटि कर रहा है क्योंकि उस सॉकेट पर एनटीपीडी चल रहा है।

कमांड लाइन से, चलाएं

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

आप एनटीपीडी को सभी एक साथ अनइंस्टॉल भी कर सकते हैं (apt-get ntp हटाएं) और हर घंटे या तो ntpdate का उपयोग करने के लिए क्रॉन स्क्रिप्ट जोड़ें।

अद्यतन करें

एनटीपी सेवा के पास शायद इस प्रणाली पर आपके लिए सार्थक मूल्य नहीं होगा, इसलिए पहले इसे हटा दें।

# sudo apt-get remove ntp

अब आदेश जोड़ें:

ntpdate -sb time.nist.gov

सेवा मेरे /etc/rclocal 

रीबूट। उस बिंदु पर अच्छा होना चाहिए।


12
2018-02-13 23:07



जवाब अपडेट किया गया। - Stephan
Ntpdate चरणबद्ध या कुछ नहीं किया जा रहा है? साथ ही, अगर मैं इसे सही ढंग से समझता हूं, तो सेवा स्थानीय घड़ी की सिंक को सर्वर की घड़ी तक चलाती है और रखती है - इसलिए बहाव बाध्य है। यदि आप एनटीपी को हटाते हैं और एक बार ntpdate चलाते हैं, तो क्या यह विस्तारित अवधि के लिए मशीन चालू होने पर घड़ी बहने से प्रभावित नहीं होगा? - ysap
स्टीफन, कृपया प्रश्न के लिए अद्यतन # 2 देखें। - ysap
हां, एनटीपीडेट को चरणबद्ध किया जा रहा है। "Ntpd -q" का उपयोग पसंद किया जाता है (दोनों प्रकारों की आवश्यकता होती है कि पहले ntpd को रोका जाए)। - tgharold


rdate -s tick.greyware.com

यदि आप बस इतना करना चाहते हैं कि घड़ी को एक बार सरल बनाएं


8
2018-02-26 22:57



धन्यवाद। मेरे पास वर्तमान में इस कमांड को जांचने के लिए सिस्टम नहीं है, लेकिन यदि आप प्रश्न और स्वीकृत उत्तर में चर्चा का पालन करते हैं, तो आप देखेंगे कि समस्या वास्तव में घड़ी अद्यतन आदेश चलाने के समय नेटवर्क अनुपलब्ध थी। - ysap
यह मेरे रास्पबेरी पीआई पर एक समय सिंक मुद्दा तय किया। धन्यवाद। - Oliver Spryn


डेबियन / मिंट / उबंटू (या अन्य डेबियन व्युत्पन्न) प्रणाली पर ऐसा करने का सही तरीका लाइन होना है

NTPD_OPTS="-g"

फाइल में

/etc/default/ntp

यह सुनिश्चित करता है कि जब /tc/init.d/ntp स्क्रिप्ट से ntpd प्रारंभ होता है, तो यह "-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

एनटीपीडी को सिस्टम समय को सही करने के लिए अनुमति दें जब यह 1000 से अधिक हो, उदाहरण के लिए जब सिस्टम समय 1 जनवरी 1 9 70 स्टार्टअप पर है क्योंकि कोई हार्डवेयर आरटीसी नहीं है।


7
2018-04-03 11:20



मेरे पास पहले से ही है, लेकिन यह अभी भी NY में 3AM कहता है, जब यह 11 बजे होना चाहिए। - chovy
मैं पहले से ही उस पंक्ति में था /etc/default/ntp, लेकिन समय सिंक्रनाइज़ नहीं किया गया था। - Dawid Ferenczy


का उपयोग करने का प्रयास करें -b समय तय करने के लिए विकल्प।


4
2018-02-13 22:18



कमांड लाइन से प्रयास करते समय, मुझे निम्न प्रतिक्रिया मिलती है: 1 Jan 00:04:11 ntpdate[2226]: the NTP socket is in use, exiting । हालांकि, मुझे लगता है कि मैंने इससे पहले कोशिश की थी rc.local लेकिन यह मदद नहीं की। - ysap
चलाने से पहले आपको एनटीपी सेवा को पहले बंद करना होगा ntpdate -b <ipaddress> - Wim Deblauwe