हम इंटरनेट का उपयोग करके लिनक्स में सिस्टम डिफ़ॉल्ट टाइमज़ोन को स्वचालित रूप से कैसे सेट कर सकते हैं? जैसा कि मैं इसे देखता हूं, NTP सर्वर केवल समय अपडेट कर सकते हैं, लेकिन टाइमज़ोन नहीं। क्या कोई सर्वर है जो टाइमज़ोन को बदल सकता है?
हम इंटरनेट का उपयोग करके लिनक्स में सिस्टम डिफ़ॉल्ट टाइमज़ोन को स्वचालित रूप से कैसे सेट कर सकते हैं? जैसा कि मैं इसे देखता हूं, NTP सर्वर केवल समय अपडेट कर सकते हैं, लेकिन टाइमज़ोन नहीं। क्या कोई सर्वर है जो टाइमज़ोन को बदल सकता है?
जवाबों:
मैंने कुछ समय पहले एक कार्यक्रम लिखा था जो यह करता है: tzupdate ।
आप देख सकते हैं कि यह आपके टाइमज़ोन को (वास्तव में इसे स्थापित किए बिना) सेट करके क्या करेगा tzupdate -p
:
$ tzupdate -p
Europe/Malta
आप इसे tzupdate
रूट के रूप में चलाकर वास्तविक के लिए सेट कर सकते हैं ।
$ sudo tzupdate
Europe/Malta
$ date
Thu 12 Sep 05:52:22 CEST 2013
यह काम करता है:
/etc/localtime
उस टाइमज़ोन के लिए जोनइनफो फ़ाइल को इंगित करने के लिए सिम्लिंक को अपडेट करनायह एक पुराना धागा है, लेकिन कुबंटु 1710 के लिए अभी भी प्रासंगिक है जो समयक्षेत्र को स्वचालित रूप से नहीं बदलता है। मैं tzupdate के लिए क्रिस डाउन के समाधान का उपयोग कर रहा हूं, लेकिन यह भी सुनिश्चित करता है कि जब सिस्टम नेटवर्क (वाईफाई या अन्य) से कनेक्ट करने का प्रयास करता है तो यह ट्रिगर हो जाता है। यह मानता है कि आप नेटवर्क प्रबंधक का उपयोग कर रहे हैं।
पहले एक टर्मिनल खोलें।
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
परीक्षण करें कि यह काम करता है
sudo tzupdate
फिर हमें यह सुनिश्चित करने की आवश्यकता है कि यह सभी उपयोगकर्ता द्वारा सुलभ हो
sudo su -
tzupdate
जो आपको जड़ के रूप में गिराता है और फिर जाँचता है कि कमांड आपके समयक्षेत्र को बदल देती है। फिर सुनिश्चित करें कि आप सामान्य उपयोगकर्ता के रूप में लौटने के लिए बाहर निकलें
exit
सुनिश्चित करें कि tzupdate को sudo के साथ पासवर्ड के बिना चलाया जा सकता है। यह बाद के चरण के लिए आवश्यक है जब हम इसे नेटवर्कमैन से ट्रिगर करते हैं जो इसे पृष्ठभूमि में चलाता है। इसे sudoers फ़ाइल को संपादित करने के लिए टर्मिनल में रखें।
sudo visudo
इस लाइन को फाइल के अंत में जोड़ें
ALL ALL=(root) NOPASSWD: /usr/local/bin/tzupdate
CTRL-X को हिट करें और फिर परिवर्तनों को सहेजने के लिए Y दबाएँ और फिर ENTER करें
हम तब सुनिश्चित करते हैं कि 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 लेकिन यह मेरे लिए काम नहीं किया है
कुबंटु में इसका परीक्षण करने के लिए - अपने स्थानीय समयक्षेत्र को कुछ और में बदलें (अपने टास्कबार में डेट प्लास्मोइड पर जाएं और राइट क्लिक करें और 'एडजस्ट डेट / टाइम' चुनें और फिर टैब से 'टाइमजोन')
अपनी वाईफाई को बंद करें और वापस चालू करें - आप देखेंगे कि एक बार जब यह वाईफाई से जुड़ जाता है, तो यह लगभग 30 सेकंड के लिए इंतजार करने लगता है और फिर सफलतापूर्वक अपना टाइमज़ोन बदलना चाहिए।
ध्यान दें कि यह वाईफ़ाई के साथ परीक्षण नहीं किया गया है, जहां किसी को वेबपेज पर पासवर्ड दर्ज करने की आवश्यकता होती है। उम्मीद है कि यह तथ्य कि यह नेटवर्क कनेक्शन के अंत में चलता है, उपयोगकर्ता को क्रेडेंशियल दर्ज करने के लिए पर्याप्त समय प्रदान करना चाहिए - अन्यथा इसके लिए आगे ट्विकिंग की आवश्यकता हो सकती है (यह देखें कि कनेक्शन मौजूद है, जांचें कि आप इंटरनेट से कनेक्ट करने में सक्षम हैं, प्रतीक्षा करें X सेकंड के लिए यदि इंटरनेट से कनेक्ट करने में सक्षम नहीं है और फिर Y बार पुनः प्रयास करें
यह स्पष्ट नहीं है कि "टाइमजोन अपडेट" से आपका क्या मतलब है।
यूनिक्स और लिनक्स 1 जनवरी, 1970, 00:00 यूटीसी के बाद से सेकंड की संख्या के रूप में समय रखते हैं। यूनिक्स प्रणाली की घड़ी इसलिए टाइमजोन स्वतंत्र है। लिनक्स कर्नेल में टाइमज़ोन मौजूद नहीं है; यह केवल तभी होता है जब कोई उपयोगकर्तास्थान समय प्रदर्शित करता है कि 1970 के बाद से सेकंड की संख्या एक टाइमज़ोन का उपयोग करके व्याख्या की जाती है। आमतौर पर, यह व्याख्या सी लाइब्रेरी फ़ंक्शंस के माध्यम से की जाती है। TZ
पर्यावरण चर द्वारा समयक्षेत्र का चयन किया जाता है। टाइमजोन परिभाषाएँ (जिसमें एक टाइमज़ोन नाम शामिल होता है, UTC से ऑफसेट होता है, जब डेलाइट बचत का समय प्रभावी होता है, और DST के दौरान ऑफ़सेट) GNU libc का हिस्सा होते हैं, और आमतौर पर लिनक्स वितरण में "tzdata" पैकेज के रूप में शामिल होते हैं। इसलिए, टाइमज़ोन परिभाषाओं को अपडेट करना apt-get upgrade
, चलने yum update
या कुछ इसी तरह के ऑपरेशन का विषय है।
ध्यान दें कि कुछ सॉफ़्टवेयर, जैसे जावा, की अपनी टाइमज़ोन परिभाषा फाइलें हैं, जिन्हें अलग से अपडेट करना होगा।
NTP 1 जनवरी, 1900 से UTC की संख्या पर नज़र रखता है । इसलिए, एनटीपी, यूनिक्स कर्नेल की तरह, टाइमज़ोन की कोई अवधारणा नहीं है।