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


210

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

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

tzselect

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

या

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

"जो gmt पर सेट होगा"

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

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

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


कृपया स्वीकृत उत्तर लेने में हमारी सहायता करें। मुझे लगता है कि @ मिच का जवाब सबसे अच्छा askubuntu.com/a/323163/22308 है
नाम जी वीयू

1
@NamGVU नहीं, मिच का सबसे अच्छा समाधान नहीं है, यह "टर्मिनल में GUI" उत्तर है। यहां तक ​​कि ओपी ने कहा "यह अभ्यस्त काम है, क्योंकि मुझे उपयोगकर्ता इनपुट के बिना एक कार्यक्रम से टाइमज़ोन को पूरा करने की आवश्यकता है मुझे एक कमांड की आवश्यकता है जो मुझे टर्मिनल में नहीं दे सकता " "एक स्क्रिप्ट के अनुकूल। Collin एंडरसन बेहतर है यदि आप एक शहर जानते हैं, या रयान सादे GMT + एन के लिए
Xen2050

Ubuntu 18.04 में, tzselect एक gui नहीं खोलता है। इसमें टर्मिनल-आधारित मेनू चयन है।
टिम रिचर्डसन

जवाबों:


321

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

sudo dpkg-reconfigure tzdata

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


14
इस अभ्यस्त काम के रूप में मैं उपयोगकर्ता इनपुट के बिना एक कार्यक्रम से समयक्षेत्र को पूरा करने की आवश्यकता है मैं एक कमांड की जरूरत है मैं टर्मिनल में फ़ीड नहीं कर सकते उत्तर के लिए धन्यवाद समाधान
user2155009

1
धन्यवाद!!! यह मदद करता है, मैं पहले से ही मैन्युअल रूप से बदल रहा हूँ आदि / timezone =) जैसे php.net/manual/en/timezones.php !!! बिल्कुल समान !!!
व्लादिमीर च

रीकॉन्फ़िगरिंग tzdata हार्डवेयर घड़ी को भी समायोजित करने के लिए लगता है ताकि समय ज़ोन स्विच के बाद प्रदर्शित समय समान रहे। आप चाहते हैं कि यदि आपका समय सही था लेकिन समय क्षेत्र गलत था। हालाँकि आप निश्चित रूप से यात्रा करते समय अपनी हार्डवेयर घड़ी को स्पर्श नहीं करना चाहते हैं। Timedatectl दृष्टिकोण केवल समय क्षेत्र बदलने लगता है।
संकेंगे

मेरे लिए @SnakE तदनुसार समय परिवर्तन प्रदर्शित करता है
रियाद

मैंने इसे बिना किसी समस्या के कॉटड लाइन से पोटीन में बदल दिया, आपने यह क्यों कहा कि मेरे दोस्त? @ADTC
सबीर तबातबाई यज़ीदी

170

आप timedatectl14.04 में समय सेट करने के लिए नए का उपयोग कर सकते हैं ।

sudo timedatectl set-timezone America/New_York

आप इसे ubuntu पर कैसे स्थापित करते हैं?
जीरो

1
यह डिफ़ॉल्ट रूप से 14.04 पर स्थापित है।
कॉलिन एंडरसन

6
सभी उपलब्ध विकल्पों को देखने के लिए, आप चला सकते हैं ls -R --group-directories-first /usr/share/zoneinfo(यहां किसी भी फ़ाइल को संशोधित या मिटाने के लिए सावधान रहें।)posix और rightउपसर्गों के बारे में अधिक जानकारी यहाँ है
ADTC

यह काम! ...
दान निसेनबौम

3
sudo timedatectl set-timezone Etc/UTCयूटीसी के लिए उपयोग करें ।
ज़ोल्टन

19

आप GMT files x फ़ाइलों का उपयोग कर सकते हैं /usr/share/zoneinfo/Etc

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

उत्तर देने के लिए धन्यवाद एक त्रुटि हो रही है im के लिए आवंटित: प्रतीकात्मक लिंक `/ आदि / स्थानीय समय बनाने में विफल ': फ़ाइल मौजूद है oboiusly im क्या आप इस के लिए अच्छे ट्यूटोरियल के बारे में जानते हैं या यहाँ तक कि कुछ प्रमुख शब्द मैं कर सकता हूँ पता नहीं क्या मैं कर सकता हूँ धन्यवाद? सही ढंग से कमांड का उपयोग करना? im sudo ln / usr / share / zoneinfo / Etc / GMT $ + 1 / etc / स्थानीय समय से घड़ी सेट करने के लिए + 1gmt
user2155009

9
मिनिटेक फोर्स फ़्लैग को भूल गया है मुझे ऐसा लगता है -> सुडो एलएन-एसएफ ....
टेली

1
यह थोड़े काम करेगा, लेकिन tz नाम को अपडेट नहीं करेगा /etc/timezone
पूलि

1
/ Etc / timezone अपडेट होने के लिए, चलाएंsudo dpkg-reconfigure --frontend noninteractive tzdata
पियरे ग्राममे

17

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

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 को केवल नतीजों को आउटपुट करने के लिए कहता है जिसे बाद में $ tz वैरिएबल पर पाइप किया जाता है।

आशा है कि यह किसी की मदद करता है!


1
महान! उबंटू 16.04 पर इसकी जगह "grep ज़ोन" और "प्रिंट $ 3" ​​होना चाहिए।
user334639

मैं टाइमजोन प्राप्त करने के लिए एक अलग क्लि का प्रस्ताव करता हूं। मेरे विचार में थोड़ा क्लीनर: कर्ल -s ' geoip.ubuntu.com/lookup ' | xmllint --xpath '/ प्रतिक्रिया / TimeZone / पाठ ()' -
Darko Miletic

11

टीएल; डीआर /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. अपडेट होने के लिए मेरी घड़ी के लिए एक मिनट प्रतीक्षा करें

स्क्रीनशॉट bellow से चरणों और पुष्टि दिखाता है timedatectl

यहां छवि विवरण दर्ज करें


यह समझना अच्छा है कि पर्दे के पीछे क्या हो रहा है, लेकिन क्या आपको नहीं लगता कि इसके लिए नामित उपकरण जैसे कि dpkg-reconfigure tzdata आदि का सुझाव देना बेहतर होगा?
पैट्रिक कार्नेलिसन

@PatrickCornelissen सबसे tzdataपहले, पहले से ही उत्तर हैं , इसलिए एक ही बात का सुझाव देना व्यर्थ है। दूसरा, tzdataबहुत अधिक समान है। यह उपयोगकर्ता के लिए तय करना है कि वे क्या पसंद करते हैं, इसलिए यह न तो बेहतर है और न ही बदतर है - बस एक व्यक्ति की प्राथमिकता।
सर्गी कोलोडियाज़नी

1
ठीक है, वितरण उपकरण के खिलाफ "काम" अक्सर समस्याओं की ओर जाता है, इसलिए यदि संभव हो तो मैं आपके दृष्टिकोण से बचूंगा, लेकिन पर्याप्त रूप से आपका समाधान काम करेगा (वर्तमान में)
पैट्रिक कॉर्निसेन

जैसा कि मैं समझता हूं, यह समाधान विभिन्न वितरणों में काम करता है। लेकिन अभी भी / usr / share / zoneinfo निर्देशिका में उपलब्ध समयक्षेत्र डेटाबेस की आवश्यकता है। क्या tzdata पैकेज स्थापित किए बिना टाइमज़ोन डेटाबेस प्राप्त करने का एक तरीका है?
andho

@andho /var/lib/dpkg/info/tzdata.listने सुझाव दिया है कि सभी आइटम /usr/share/zoneinfoउस पैकेज के साथ आते हैं, मुझे लगता है कि आपको सभी आइटम रखने के लिए पैकेज को स्थापित करने की आवश्यकता होगी, लेकिन स्पष्ट रूप से मैं बिल्कुल निश्चित नहीं हूं, साथ ही साथ यह बहुत परिचित नहीं है कि यह दूसरे पर कैसे काम करता है वितरण। इसे यूनिक्स और लिनक्स पर एक प्रश्न के रूप में पूछने पर विचार करें , और यदि आप प्रश्न के लिए संदर्भ प्रदान करना चाहते हैं तो इस पोस्ट का संदर्भ देने के लिए स्वतंत्र महसूस करें।
सर्गी कोलोडियाज़नी

10

समयक्षेत्र अपडेट करने का आसान तरीका है उपयोग करना 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सुसंगत होना चाहिए।

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


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

5

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

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

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


tzselectटाइमजोन स्ट्रिंग प्राप्त करने का एक अच्छा तरीका है
मार्टिन थोमा

0

आप ऐसा तब तक नहीं कर सकते जब तक आप प्रत्येक समय क्षेत्र ऑफसेट के अनुरूप समय क्षेत्र फ़ाइल का चयन नहीं करते।

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

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.