स्थान के अनुसार स्वचालित रूप से लिनक्स टाइमज़ोन सेट करें


19

हम इंटरनेट का उपयोग करके लिनक्स में सिस्टम डिफ़ॉल्ट टाइमज़ोन को स्वचालित रूप से कैसे सेट कर सकते हैं? जैसा कि मैं इसे देखता हूं, NTP सर्वर केवल समय अपडेट कर सकते हैं, लेकिन टाइमज़ोन नहीं। क्या कोई सर्वर है जो टाइमज़ोन को बदल सकता है?


1
क्या आप कह रहे हैं कि दिन के समय की बचत से लेकर मानक समय तक के समय क्षेत्र में बदलाव?
SLM

यहाँ, दो चीजें हैं। 1. यदि देश में परिवर्तन हो। 2. दूसरा अगर दिन की हल्की बचत में बदलाव हो।
एंबेडेड प्रोग्रामर

ntp सर्वर दिन के उजाले बचत समय में परिवर्तन को स्वचालित रूप से संभालते हैं। मुझे ऐसे किसी भी सर्वर के बारे में नहीं पता है जो आपके स्थान का पता लगाता हो और आपके टाइमज़ोन को स्वचालित रूप से अपडेट करता हो (जैसे सेल फोन करता है)।
drs

2
@ अधिक सटीक रूप से, NTP समय क्षेत्र के बारे में बिल्कुल भी परवाह नहीं करता है। NTP समय UTC, सादा और सरल है, और समय क्षेत्र रूपांतरण ग्राहक के प्रदर्शन के लिए है। एक विशिष्ट NTP क्लाइंट टाइमज़ोन रूपांतरण कर सकता है, या यह नहीं हो सकता है, लेकिन चूंकि अधिकांश * nix सिस्टम के पास सिस्टम घड़ी UTC के लिए वैसे भी सेट है, इसलिए इसकी आवश्यकता नहीं होनी चाहिए।
एक सीवीएन

जवाबों:


36

मैंने कुछ समय पहले एक कार्यक्रम लिखा था जो यह करता है: tzupdate

आप देख सकते हैं कि यह आपके टाइमज़ोन को (वास्तव में इसे स्थापित किए बिना) सेट करके क्या करेगा tzupdate -p:

$ tzupdate -p
Europe/Malta

आप इसे tzupdateरूट के रूप में चलाकर वास्तविक के लिए सेट कर सकते हैं ।

$ sudo tzupdate
Europe/Malta
$ date
Thu 12 Sep 05:52:22 CEST 2013

यह काम करता है:

  • अपने वर्तमान आईपी को जियोलोकेशन करना
  • उस स्थान के लिए समय क्षेत्र प्राप्त करना
  • /etc/localtimeउस टाइमज़ोन के लिए जोनइनफो फ़ाइल को इंगित करने के लिए सिम्लिंक को अपडेट करना

6

यह एक पुराना धागा है, लेकिन कुबंटु 1710 के लिए अभी भी प्रासंगिक है जो समयक्षेत्र को स्वचालित रूप से नहीं बदलता है। मैं tzupdate के लिए क्रिस डाउन के समाधान का उपयोग कर रहा हूं, लेकिन यह भी सुनिश्चित करता है कि जब सिस्टम नेटवर्क (वाईफाई या अन्य) से कनेक्ट करने का प्रयास करता है तो यह ट्रिगर हो जाता है। यह मानता है कि आप नेटवर्क प्रबंधक का उपयोग कर रहे हैं।

पहले एक टर्मिनल खोलें।

  1. Tzupdate स्थापित करें

    sudo apt install python-pip
    pip install -U tzupdate
    

    फिर सुनिश्चित करें कि यह सभी उपयोगकर्ताओं द्वारा सुलभ है

    sudo cp -R ~/.local/lib/python2.7/site-packages/. /usr/lib/python2.7/.
    sudo cp /home/marta_riba/.local/bin/tzupdate /usr/local/bin/tzupdate
    
  2. परीक्षण करें कि यह काम करता है

    sudo tzupdate
    
  3. फिर हमें यह सुनिश्चित करने की आवश्यकता है कि यह सभी उपयोगकर्ता द्वारा सुलभ हो

    sudo su -
    tzupdate
    

    जो आपको जड़ के रूप में गिराता है और फिर जाँचता है कि कमांड आपके समयक्षेत्र को बदल देती है। फिर सुनिश्चित करें कि आप सामान्य उपयोगकर्ता के रूप में लौटने के लिए बाहर निकलें

    exit
    
  4. सुनिश्चित करें कि tzupdate को sudo के साथ पासवर्ड के बिना चलाया जा सकता है। यह बाद के चरण के लिए आवश्यक है जब हम इसे नेटवर्कमैन से ट्रिगर करते हैं जो इसे पृष्ठभूमि में चलाता है। इसे sudoers फ़ाइल को संपादित करने के लिए टर्मिनल में रखें।

    sudo visudo
    

    इस लाइन को फाइल के अंत में जोड़ें

    ALL ALL=(root) NOPASSWD: /usr/local/bin/tzupdate
    

    CTRL-X को हिट करें और फिर परिवर्तनों को सहेजने के लिए Y दबाएँ और फिर ENTER करें

  5. हम तब सुनिश्चित करते हैं कि NetworkManager हमेशा नेटवर्क कनेक्शन परिवर्तन को ट्रिगर करने के बाद इसे कॉल करता है (जैसे कि जब एक वाईफाई से कनेक्ट होता है)। इसके लिए हम डिस्पैचर। फोल्डर में tzupdate नामक एक फाइल बनाते हैं, जिसे बस sudo tzupdate कहते हैं। फ़ाइल को चलाने के लिए निष्पादन योग्य अनुमतियों की आवश्यकता है

    echo 'sudo tzupdate'| sudo tee /etc/NetworkManager/dispatcher.d/99-tzupdate
    sudo chmod +x /etc/NetworkManager/dispatcher.d/99-tzupdate
    

    ध्यान दें कि NetworkManager sudo (यानी sudo tzupdate) को कॉल करेगा जो आम तौर पर पासवर्ड के लिए संकेत देगा।

    ऐसा करने का एक बेहतर तरीका हो सकता है अर्थात NetworkManager को केवल तभी कॉल करें जब वह कनेक्शन लाता है और डाउन के लिए भी नहीं (जैसा कि ऊपर करेगा) - मैंने स्क्रिप्ट को / etc / नेटवर्क / if-up में डालने की कोशिश की है .d लेकिन यह मेरे लिए काम नहीं किया है

  6. कुबंटु में इसका परीक्षण करने के लिए - अपने स्थानीय समयक्षेत्र को कुछ और में बदलें (अपने टास्कबार में डेट प्लास्मोइड पर जाएं और राइट क्लिक करें और 'एडजस्ट डेट / टाइम' चुनें और फिर टैब से 'टाइमजोन')

    अपनी वाईफाई को बंद करें और वापस चालू करें - आप देखेंगे कि एक बार जब यह वाईफाई से जुड़ जाता है, तो यह लगभग 30 सेकंड के लिए इंतजार करने लगता है और फिर सफलतापूर्वक अपना टाइमज़ोन बदलना चाहिए।

    ध्यान दें कि यह वाईफ़ाई के साथ परीक्षण नहीं किया गया है, जहां किसी को वेबपेज पर पासवर्ड दर्ज करने की आवश्यकता होती है। उम्मीद है कि यह तथ्य कि यह नेटवर्क कनेक्शन के अंत में चलता है, उपयोगकर्ता को क्रेडेंशियल दर्ज करने के लिए पर्याप्त समय प्रदान करना चाहिए - अन्यथा इसके लिए आगे ट्विकिंग की आवश्यकता हो सकती है (यह देखें कि कनेक्शन मौजूद है, जांचें कि आप इंटरनेट से कनेक्ट करने में सक्षम हैं, प्रतीक्षा करें X सेकंड के लिए यदि इंटरनेट से कनेक्ट करने में सक्षम नहीं है और फिर Y बार पुनः प्रयास करें


2
यह बहुत बुरा है कि 2018 में यह अभी भी सही उत्तर है। मेरा मानना ​​है कि गनोम के पास एक पैकेज (सूक्ति-घड़ियां) हैं जो इसे संभाल लेंगे लेकिन केडीई में वर्तमान में कोई अन्य अच्छा समाधान नहीं है।
कार्डनेटर

कमांड चलाने से पहले यदि नेटवर्क कनेक्शन चालू है तो आप "अगर [" $ 2 "=" ऊपर "]" कर सकते हैं। दूसरा पैराग्राफ क्या एनएम द्वारा बुलाया जा रहा है।
फ़लामसुडी

-2

यह स्पष्ट नहीं है कि "टाइमजोन अपडेट" से आपका क्या मतलब है।

यूनिक्स और लिनक्स 1 जनवरी, 1970, 00:00 यूटीसी के बाद से सेकंड की संख्या के रूप में समय रखते हैं। यूनिक्स प्रणाली की घड़ी इसलिए टाइमजोन स्वतंत्र है। लिनक्स कर्नेल में टाइमज़ोन मौजूद नहीं है; यह केवल तभी होता है जब कोई उपयोगकर्तास्थान समय प्रदर्शित करता है कि 1970 के बाद से सेकंड की संख्या एक टाइमज़ोन का उपयोग करके व्याख्या की जाती है। आमतौर पर, यह व्याख्या सी लाइब्रेरी फ़ंक्शंस के माध्यम से की जाती है। TZपर्यावरण चर द्वारा समयक्षेत्र का चयन किया जाता है। टाइमजोन परिभाषाएँ (जिसमें एक टाइमज़ोन नाम शामिल होता है, UTC से ऑफसेट होता है, जब डेलाइट बचत का समय प्रभावी होता है, और DST के दौरान ऑफ़सेट) GNU libc का हिस्सा होते हैं, और आमतौर पर लिनक्स वितरण में "tzdata" पैकेज के रूप में शामिल होते हैं। इसलिए, टाइमज़ोन परिभाषाओं को अपडेट करना apt-get upgrade, चलने yum updateया कुछ इसी तरह के ऑपरेशन का विषय है।

ध्यान दें कि कुछ सॉफ़्टवेयर, जैसे जावा, की अपनी टाइमज़ोन परिभाषा फाइलें हैं, जिन्हें अलग से अपडेट करना होगा।

NTP 1 जनवरी, 1900 से UTC की संख्या पर नज़र रखता है । इसलिए, एनटीपी, यूनिक्स कर्नेल की तरह, टाइमज़ोन की कोई अवधारणा नहीं है।


2
Timezone अपडेट, हम देख सकते हैं कि "तारीख" कमांड / etc / localtime timezone के अनुसार समय और दिनांक प्रिंट करेगा, हम समय-समय पर मैन्युअल रूप से / usr / share / zoneinfo / America / Los_Angeles का प्रतीकात्मक लिंक बनाकर बदल सकते हैं। लेकिन यह करने का मैनुअल तरीका है। मैं चाहता हूं, इसे स्वचालित रूप से देश के समय क्षेत्र को अपडेट करना चाहिए जहां मैं मैन्युअल रूप से करने के बजाय हूं।
एंबेडेड प्रोग्रामर

सरल शब्दों में, यह एक स्थानीय समय के लिए है, स्वचालित टाइमज़ोन अपडेट केवल उन लोगों के लिए आवश्यक हैं, जो बहुत अधिक यात्रा करते हैं।
सेसियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.