सवाल टर्मिनल से टाइमज़ोन सेट करना


मैं टर्मिनल से सिस्टम घड़ी का टाइमज़ोन बदलना चाहता हूं।

यह साथ किया जा सकता है

tzselect

"जो टर्मिनल में एक गुई खुलता है"

या

sudo cp /usr/share/zoneinfo/Europe/London /etc/localtime

"जो जीएमटी पर सेट होगा"

लेकिन क्या समय क्षेत्र को केवल ऑफसेट अर्थात -1 या +5 आदि के साथ सेट करने का कोई तरीका है?

मुझे ऐसा करने की ज़रूरत है क्योंकि मैं टाइमऑफसेट या रिपोर्ट लॉग समायोजित करने के लिए एक एप्लीकेशन लिख रहा हूं और मेरे पास एकमात्र जानकारी उपयोगकर्ता आईपी है। मैं आईपी के स्थान को खोजने के लिए एक वेबपैप का उपयोग कर सकता हूं, लेकिन फिर मुझे ऑफ़सेट सेट करने की आवश्यकता है जो आसान होगा अगर मैं सिर्फ स्थान की ऑफसेट प्राप्त कर सकूं, लेकिन अगर मुझे ज़ोन और शहर ढूंढना है तो यह वास्तविक दर्द होगा ।

अगर किसी को +/- घंटे के साथ सिस्टम घड़ी सेट करने का उत्तर पता है तो यह बहुत अच्छा होगा।


174
2017-07-22 20:22


मूल


स्वीकार्य उत्तर लेने के लिए कृपया हमें मदद करें। मुझे लगता है कि @ मिच का जवाब सबसे अच्छा है askubuntu.com/a/323163/22308 - Nam G VU
@NamGVU नहीं, मिच का सबसे अच्छा समाधान नहीं है, यह "टर्मिनल में जीयूआई" उत्तर है। यहां तक ​​कि ओपी ने कहा "यह काम नहीं करेगा क्योंकि मुझे उपयोगकर्ता इनपुट के बिना किसी प्रोग्राम से टाइमज़ोन को अलग करने की आवश्यकता है, मुझे एक कमांड की आवश्यकता है जिसे मैं टर्मिनल में फ़ीड नहीं कर सकता,, और यही वही उद्देश्य है जो "टर्मिनल समाधान" की तलाश करते समय सबसे अधिक चाहते हैं, एक स्क्रिप्ट-अनुकूल एक। कॉलिन एंडरसन का बेहतर है अगर आप एक शहर जानते हैं, या रयान की सादे जीएमटी + -एन के लिए - Xen2050


जवाब:


टर्मिनल से समय क्षेत्र बदलने के लिए, बस दबाएं Ctrl+ऑल्ट+टी टर्मिनल खोलने के लिए अपने कीबोर्ड पर। जब यह खुलता है, नीचे दिए गए आदेश चलाएं:

sudo dpkg-reconfigure tzdata

एक बार खुलने के बाद, समय क्षेत्र बदलने के लिए बस स्क्रीन का पालन करें।


274
2017-07-22 22:02



यह सबसे आसान, सबसे दर्द रहित विधि है। - Thomas Ward♦
यह काम नहीं करेगा क्योंकि मुझे उपयोगकर्ता इनपुट के बिना प्रोग्राम से टाइमज़ोन को अलग करने की आवश्यकता है, मुझे एक कमांड की आवश्यकता है जिसे मैं टर्मिनल में खिला सकता हूं, उत्तर के लिए gui समाधान धन्यवाद नहीं - user2155009
@ user2155009 बहुत आसान गैर-जीयूआई पूरी तरह से टर्मिनल आधारित समाधान है कॉलिन एंडरसन का जवाब। मुझे समझ में नहीं आता कि कोई टर्मिनल प्रश्न के लिए जीयूआई जवाब क्यों देगा। अगर हम जीयूआई का उपयोग करना चाहते थे, तो हम जीयूआई का इस्तेमाल करते थे, जीयूआई से टर्मिनल लॉन्च नहीं करते थे, फिर टर्मिनल से जीयूआई लॉन्च करते थे ... - ADTC
धन्यवाद!!! इससे मदद मिलती है, मैं पहले से ही मैन्युअल रूप से बदल चुका हूं etc / समय क्षेत्र =) पसंद है php.net/manual/en/timezones.php !!! बिल्कुल समान !!! - Vladimir Ch
@ADTC वास्तव में मेरे विचार, उस कारण के लिए downvoted। - Elijah Lynn


आप नए का भी उपयोग कर सकते हैं timedatectl 14.04 में समय निर्धारित करने के लिए।

sudo timedatectl set-timezone America/New_York

141
2017-09-15 15:43



आप इसे उबंटू पर कैसे स्थापित करते हैं? - Division by Zero
यह 14.04 को डिफ़ॉल्ट रूप से स्थापित है। - Collin Anderson
सभी उपलब्ध विकल्पों को देखने के लिए, आप चला सकते हैं ls -R --group-directories-first /usr/share/zoneinfo। (यहां किसी भी फाइल को संशोधित या मिटाने के लिए सावधान रहें।) के बारे में अधिक जानकारी posix तथा right उपसर्ग है यहाँ। - ADTC
यह काम! ... - Dan Nissenbaum
उपयोग sudo timedatectl set-timezone Etc/UTC यूटीसी के लिए - Zoltán


आप जीएमटी ± का उपयोग कर सकते हैंएक्स में फाइलें /usr/share/zoneinfo/Etc

sudo ln -fs /usr/share/zoneinfo/Etc/GMT$offset /etc/localtime

17
2017-07-22 20:43



जवाब के लिए धन्यवाद, मुझे एक त्रुटि मिल रही है ln: प्रतीकात्मक लिंक `/ etc / localtime 'बनाने में असफ़ल: फ़ाइल मौजूद है, मुझे यकीन नहीं है कि आप इसके लिए अच्छे ट्यूटोरियल के बारे में क्या जानते हैं या यहां तक ​​कि कुछ महत्वपूर्ण शब्द भी मैं Google को धन्यवाद दे सकता हूं। सही ढंग से आदेश का उपयोग कर? मैं एसडीओ एलएन / यूएसआर / शेयर / जोनिनोफो / एटीसी / जीएमटी $ + 1 / आदि / लोकलटाइम का उपयोग कर घड़ी को सेट करने के लिए + 1 जीएमटी का उपयोग कर रहा हूँ - user2155009
मिनीटेक बल ध्वज भूल गया मुझे लगता है -> sudo ln -sf .... - Tele
यह थोड़े काम करेगा, लेकिन इसमें tz नाम अपडेट नहीं होगा /etc/timezone। - poolie


मुझे एहसास है कि यह धागा थोड़ा दिनांकित है, लेकिन मैं एक बेहतर समाधान की तलाश में था क्योंकि उपयोगकर्ता इसे हमारी वेबसाइट से डाउनलोड करने और इसे तैनात करने के बाद स्वचालित रूप से वीएम में टाइमज़ोन सेट करने की आवश्यकता थी। यहां मैंने जो समाप्त किया है:

echo "Setting TimeZone..."
export tz=`wget -qO - http://geoip.ubuntu.com/lookup | sed -n -e 's/.*<TimeZone>\(.*\)<\/TimeZone>.*/\1/p'` &&  timedatectl set-timezone $tz
export tz=`timedatectl status| grep Timezone | awk '{print $2}'`
echo "TimeZone set to $tz"

यह नए नेटवर्क पर शुरू होने के बाद सर्वर से geoip.ubuntu.com से पूछताछ करेगा (मेरी स्क्रिप्ट कनेक्टिविटी के पहले पाठ्यक्रम के लिए जांच करता है) और फिर प्रतिक्रिया के आधार पर सर्वर का टाइमज़ोन सेट करें।

"Wget -q0 -" wget को केवल stdout के परिणामों को आउटपुट करने के लिए बताता है जिसे तब $ tz चर के लिए पाइप किया जाता है।

उम्मीद है कि यह किसी की मदद करता है!


16
2017-12-25 03:22



महान! उबंटू 16.04 पर यह "grep जोन" और "$ 3 प्रिंट" होना चाहिए। - user334639
मैं टाइमज़ोन प्राप्त करने के लिए एक अलग क्ली प्रस्तावित करता हूं। मेरे विचार में थोड़ा क्लीनर: कर्ल-एस 'geoip.ubuntu.com/lookup '; | xmllint --xpath '/ प्रतिक्रिया / टाइमज़ोन / पाठ ()' - - Darko Miletic


टी एल; डॉ  /etc/localtime एक प्रतीकात्मक लिंक है जो एक फ़ाइल को इंगित करता है /usr/share/zoneinfo/Continent/City। यह कहां बदलता है कि आप अपना टाइमज़ोन बदल सकते हैं।

टाइमज़ोन बदलने के लिए, हटा दें /etc/localtime और अपने वांछित शहर के लिए प्रतीकात्मक लिंक असाइन करें। उदाहरण के लिए, ls -l /etc/localtime रिपोर्ट करता है कि यह फ़ाइल इंगित करती है /usr/share/zoneinfo/America/Denver। इसे न्यूयॉर्क में बदलने के लिए, मैं करता हूं

  1. sudo rm /etc/localtime
  2. sudo ln -s /usr/share/zoneinfo/America/New_York /etc/localtime
  3. मेरी घड़ी को अद्यतन होने के लिए एक मिनट प्रतीक्षा करें

स्क्रीनशॉट बेलो से कदम और पुष्टि दिखाता है timedatectl

enter image description here


10
2018-05-06 02:21



यह समझना अच्छा लगता है कि पर्दे के पीछे क्या हो रहा है, लेकिन क्या आपको नहीं लगता कि डीपीकेजी-पुनर्गठन tzdata आदि जैसे नामित टूल्स का सुझाव देना बेहतर होगा? - Patrick Cornelissen
@PatrickCornelissen सबसे पहले, इसके लिए जवाब हैं tzdata पहले से ही, एक ही बात का सुझाव देना व्यर्थ है। दूसरा, tzdata बहुत कुछ वही करता है। यह तय करने के लिए उपयोगकर्ता पर निर्भर करता है कि वे क्या पसंद करते हैं, इसलिए यह न तो बेहतर और न ही बदतर है - केवल एक व्यक्ति की वरीयता। - Sergiy Kolodyazhnyy
खैर, वितरण उपकरणों के खिलाफ "काम" करने से अक्सर समस्याएं होती हैं, इसलिए यदि संभव हो तो मैं आपके दृष्टिकोण से बचूंगा, लेकिन आपका समाधान पर्याप्त होगा (वर्तमान में) - Patrick Cornelissen
जैसा कि मैं समझता हूं, यह समाधान विभिन्न वितरणों में काम करता है। लेकिन अभी भी / usr / share / zoneinfo निर्देशिका में उपलब्ध टाइमज़ोन डेटाबेस की आवश्यकता है। क्या tzdata पैकेज स्थापित किए बिना टाइमज़ोन डेटाबेस प्राप्त करने का कोई तरीका है? - andho
@andho के बाद से /var/lib/dpkg/info/tzdata.list सुझाव देता है कि सभी वस्तुओं में /usr/share/zoneinfo उस पैकेज के साथ आओ, मुझे लगता है कि आपको सभी वस्तुओं को रखने के लिए पैकेज स्थापित करने की आवश्यकता है, लेकिन स्पष्ट रूप से मुझे पूरा यकीन नहीं है, साथ ही यह अन्य वितरणों पर कैसे काम करता है उससे परिचित नहीं है। इसे एक प्रश्न के रूप में पूछने पर विचार करें यूनिक्स और लिनक्स, और यदि आप प्रश्न के संदर्भ प्रदान करना चाहते हैं तो इस पोस्ट का संदर्भ देने में संकोच न करें। - Sergiy Kolodyazhnyy


टाइमज़ोन को अपडेट करने का आसान तरीका उपयोग करना है sudo dpkg-reconfigure tzdata। लेकिन यह इतना आसानी से लिपि नहीं है।

यदि आप स्क्रिप्ट के माध्यम से स्पष्ट रूप से टाइमज़ोन सेट करना चाहते हैं (उदा। वीएम सेट करने के लिए), यहां एक नुस्खा है:

आपके इच्छित टाइमज़ोन के लिए एक चर सेट करें, उदा। में से एक

tz=Europe/London
tz=America/Anchorage
tz=Etc/GMT+6

मान्य मान निर्देशिका और फ़ाइल नाम नीचे हैं /usr/share/zoneinfo

फिर बस

sudo cp -vf /usr/share/zoneinfo/$tz /etc/localtime
echo $tz | sudo tee /etc/timezone

ध्यान दें कि दोनों /etc/localtime तथा /etc/timezone सुसंगत होना चाहिए।

संभवतः अब आपकी सभी सेवाओं को अपडेट करने के लिए रीबूट करें (उदा। क्रॉन)।


10
2018-05-13 18:13



-1: कभी भी उपयोग न करें cp / etc / localtime सेट करने के लिए। / आदि / लोकलटाइम एक है सिमलिंक सही फ़ाइल में। यदि तुम प्रयोग करते हो cp इसे बदलने के लिए, आप वास्तव में जो भी tzdata फ़ाइल वर्तमान में इंगित कर रहे हैं, उसकी सामग्री को रोक देंगे, इसलिए अचानक (उदाहरण के लिए) यूटीसी tzdata फ़ाइल में यूटीसी के बजाय यूरोप / लंदन के लिए टाइमज़ोन डेटा होता है, जो खराब है (और समस्या निवारण के लिए परेशान है, जैसा कि मैं व्यक्तिगत अनुभव से कह सकता हूं) - Foogod


यहां मैं जिस विधि का उपयोग करता हूं, वह यूएस-केंद्रित है क्योंकि मुझे गैर-यूएस समय क्षेत्र के बारे में चिंता करने की आवश्यकता नहीं है।

अगर मुझे वर्तमान समय क्षेत्र निर्धारित करने की आवश्यकता है, तो मैं या तो करता हूं:

cat /etc/timezone  

या

sudo hwclock --show  

मैं फिर करता हूं:

timedatectl set-timezone <_designation_>

कहा पे <_designation_> निम्नलिखित में से एक है:

अमेरिका / पूर्वी
यूएस / मध्य
अमेरिका / माउंटेन
यूएस / प्रशांत
अमेरिका / अलास्का
अमेरिका / एलेउटियन
अमेरिका / एरिजोना
अमेरिका / पूर्वी इंडियाना
अमेरिका / हवाई
अमेरिका / इंडियाना स्टार्क
अमेरिका / मिशिगन
यूएस / प्रशांत नई
अमेरिका / समोआ

उदा .:

timedatectl set-timezone US/Eastern  

अन्य टाइमज़ोन पदनाम यहां पाए जा सकते हैं: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones


3
2018-03-29 19:04





आप तब तक ऐसा नहीं कर सकते जब तक कि आप उस समय क्षेत्र फ़ाइल का चयन न करें जिसे आप प्रत्येक बार जोन ऑफसेट से मेल खाते हैं।

कुछ उत्तरों ने / usr / share / zoneinfo / आदि में फ़ाइलों का उपयोग करने का सुझाव दिया, लेकिन इनके साथ समस्या यह है कि वे डीएसटी अज्ञेयवादी हैं।

इसलिए जब तक आप प्रत्येक ऑफसेट से मेल खाने के लिए कुछ समय क्षेत्र कॉन्फ़िगरेशन नहीं चुनते हैं, या आपको डीएसटी की परवाह नहीं है, तो इसे सामान्य रूप से करने का कोई तरीका नहीं है।


0
2017-08-23 17:52