سؤال كيف تتحقق من المنطقة الزمنية في لينكس؟


هل هناك طريقة للتحقق من المنطقة الزمنية التي أعمل بها حاليًا على نظام التشغيل Linux؟


120
2017-07-11 04:57


الأصل




الأجوبة:


عادة ، و TZ سيخبرك متغير البيئة بشيء مفيد. ومع ذلك ، فمن الأفضل استخدام وظائف مثل mktime() و localtime() لتحويل بين time_t وتمثيل المنطقة الزمنية المحلية. هذا هو، لا تحاول القيام بالتحويل بنفسك.


18
2017-07-11 04:59



هل هناك أي أمر يخبر عن المنطقة الزمنية للمستخدم؟
بالتأكيد، date سوف اقول لك. - Greg Hewgill
لدي اثنين من مثيل الخادم ، إذا أعطيت الأمر "التاريخ" في كلا الخادمين يظهر وقت مختلف. المنطقة الزمنية لكل من الخادم هو IST ، وقت خادم واحد: Mon Jul 11 ​​10:39:31 IST 2011 وخادم آخر Mon يوليو 11 10:35:31 IST 2011 .. هناك اختلاف من 4 دقائق
على دقيق البنغول echo $TZ يعيد لا شيء بالنسبة لي. - Iain Samuel McLean Elder
GregHewgill إجابتك ليست مفيدة في أول مشاهدة. النظر في تحرير إجابتك من فضلك. انظر الإجابة الأكثر تصويت أدناه. سأقوم بتخفيض إجابتك في الوقت الحالي. أيضا لا يوجد TZ ENV على الافتراضي على الأجهزة الخاصة بي. - therealmarv


إذا كنت تقصد من وحدة التحكم ، فقط اكتب:

date +%Z

234
2017-07-11 05:01



جيد ، يعمل بشكل جيد. - Silver Moon
هذا يجب أن يكون الجواب المقبول - KalenGi
نقطة جيدة ... غيرت الإجابة على هذا التأثير - Rasman
ولتعيين المنطقة الزمنية من سطر الأوامر في Ubuntu ، يوفر الرابط التالي أمرًا بسيطًا من سطر واحد للقيام بذلك: askubuntu.com/a/524362/182454 - Dan Nissenbaum
هذا يعطي +07 لي. للحصول على Region/City على لينكس ديبيان / القوس ، انظر هذا الجواب. - Tom Hale


إذا كنت تريد المنطقة الزمنية الرقمية:

date +'%:z %Z'

إخراج العينة:

-05:00 EST

50
2018-02-13 16:22



على OS X هذه المخرجات :z EST - suspectus
هذا إذا ل لينكس. - Paul Vargas
بتعبير أدق ، هذا ينطبق على غنو date. يطبع إصدار BusyBox شيئًا غير حسي ، "٪: z CEST" في حالتي. - Léo Lam
ومع ذلك ، يعمل التاريخ +٪ z بشكل جيد على OS X. أقترح عليك تعديل الإجابة. - Neil Mayhew
مرحبًا ،NeilMayhew شكرًا! هام ... لكن السؤال له علامات linux  ubuntu-10.04 - Paul Vargas


أردت العثور على المنطقة الزمنية في نموذج "الولايات المتحدة / الشرقية" أو "أوروبا / لندن" بدلاً من ذلك. يمكنك العثور على هذا في:

  • / etc / timezone (موجود على Ubuntu و Red Hat؟ ولكن ليس على سبيل المثال Amazon Linux)
  • (على نظم نمط ريد هات) ZONE="US/Eastern" في / etc / sysconfig / الساعة
  • أو يمكنك محاولة ومطابقة / etc / localtime مع أحد الملفات الموجودة ضمن / usr / share / zoneinfo؛ بشكل مزعج ، لا يبدو هذا رابطًا رمزيًا ، ولكن يمكنك على سبيل المثال

    cd / usr / share / zoneinfo
      find * -pepe f -exec sh -c "diff -q / etc / localtime" {} '> / dev / null && echo {} "\؛

    للعثور على الملفات المطابقة - ربما هناك طرق أفضل للقيام بذلك ، ولكن هذا يعمل. سيكون هناك عدة مباريات.


23
2017-08-31 09:58



find /usr/share/zoneinfo/ -type f| xargs md5sum | grep $(md5sum /etc/localtime | cut -d' ' -f1) - freiheit


ل ubuntu حاول هذا:

$ cat /etc/timezone

إخراج العينة:

Asia/Kolkata

للتوزيعة الأخرى https://unix.stackexchange.com/questions/110522/timezone-setting-in-linux


8
2018-05-10 10:50



بعض الأحيان timedatectl set-timezone لا تحديث /etc/timezone. نرى هذا الجواب للحصول على حل يقوم على /etc/localtime. - Tom Hale


قد تكون في بعض الأحيان تبحث عن المنطقة الزمنية الكنسية بدلاً من النموذج القصير الذي تنتجه date %Z مثلا US/Eastern. على أنظمة مع timedatectl مثلا فيدورا، timedatectl إخراج الكثير من المعلومات المفيدة ، بما في ذلك المنطقة الحالية:

# timedatectl
      Local time: Tue 2016-09-13 17:10:26 EDT
  Universal time: Tue 2016-09-13 21:10:26 UTC
        RTC time: Tue 2016-09-13 21:10:26
       Time zone: US/Eastern (EDT, -0400)
 Network time on: yes
NTP synchronized: yes
 RTC in local TZ: no

للأسف، timedatectl يأخذ set-timezone كقيادة ، ولكن ليس لها نظير get-timezone. تحليلها على النحو التالي:

# timedatectl status | grep "zone" | sed -e 's/^[ ]*Time zone: \(.*\) (.*)$/\1/g'`
US/Eastern

5
2017-09-13 21:16





$ strings /etc/localtime | tail -n 1
MST7MDT,M3.2.0,M11.1.0

لذلك أنا في وقت الجبل. على الرغم من أن التنبيهات الواردة أعلاه حول استخدام متغير بيئة التشغيل أو إخراج أمر التاريخ فقط ، قد تعمل في بعض الأحيان بشكل أفضل ، وهذا يتوقف على الطريقة التي تريد استخدامها بها.


4
2017-07-22 04:58





  • / etc / sysconfig / clock يحدد ما إذا كانت ساعة الجهاز يتم تخزينها بالتوقيت العالمي المنسق (UTC) أم بالتوقيت المحلي.
  • Symlink / etc / localtime إلى / usr / share / zoneinfo / ... لتحديد المنطقة الزمنية.
  • نوع /sbin/hwclock --systohc [--utc] لتعيين ساعة الاجهزه.

تقوم نواة لينكس دائمًا بتخزين الوقت وحسابه بعدد الثواني منذ منتصف ليل الأول من يناير 1970 حسب التوقيت العالمي المنسق بغض النظر عما إذا كانت ساعة الجهاز الخاصة بك مخزنة على أنها UTC أم لا. يتم إجراء التحويلات إلى وقتك المحلي في وقت التشغيل. شيء واحد أنيق حول هذا هو أنه إذا كان شخص ما يستخدم جهاز الكمبيوتر الخاص بك من منطقة زمنية مختلفة ، فيمكنه ضبط متغير بيئة TZ وستظهر جميع التواريخ والأوقات بشكل صحيح لمنطقتهم الزمنية.

إذا تم تخزين عدد الثواني منذ الأول من كانون الثاني 1970 بالتوقيت العالمي المنسق (UTC) كعدد صحيح 32 بت موقّع (كما هو على نظام لينكس / إنتل) ، ستتوقف ساعتك عن العمل في وقت ما في عام 2038. ليس لدى لينكس مشكلة أصيلة في Y2K ، ولكن لديها مشكلة عام 2038. نأمل أن جميعنا سنقوم بتشغيل Linux على أنظمة 64 بت بحلول ذلك الوقت. الأعداد الصحيحة من 64-بت سوف تبقي ساعاتنا تعمل بشكل جيد حتى aproceed تقريبا 292271 مليون السنة.


2
2017-07-11 05:01