লিনাক্সে কোন টাইমজোনটি পরীক্ষা করবেন?


উত্তর:


19

সাধারণত, TZপরিবেশের পরিবর্তনশীল আপনাকে দরকারী কিছু বলবে। তবে ফাংশন ব্যবহার করা যেমন mktime()এবং স্থানীয় সময় অঞ্চল প্রতিনিধির localtime()মধ্যে রূপান্তর time_tকরা ভাল। অর্থাৎ রূপান্তরটি নিজেই করার চেষ্টা করবেন না


2
এমন কোন কমান্ড রয়েছে যা ব্যবহারকারীরা টাইমজোন সম্পর্কে বলে?

26
অবশ্যই, dateআপনাকে বলব।
গ্রেগ হিউগিল

আমার সার্ভারের দুটি উদাহরণ রয়েছে, যদি আমি উভয় সার্ভারে "তারিখ" কমান্ড দিই তবে এটি আলাদা সময় দেখায়। উভয় সার্ভারের জন্য সময় অঞ্চলটি আইএসটি, একটি সার্ভারের সময়: সোম 11 জুলাই 10:39:31 IST 2011 এবং অন্য সার্ভার সোম 11 জুলাই 10:35:31 IST 2011 .. 4 মিনিটের ব্যবধান রয়েছে

8
অন ​​প্রাইসিস প্যাঙ্গোলিন echo $TZআমার জন্য কিছুই ফিরিয়ে দেয় না।
আইয়েন স্যামুয়েল ম্যাকলিন বয়স্ক

3
@ গ্রেগ হিউগিল আপনার উত্তর প্রথম দর্শনে সহায়ক নয়। আপনার উত্তর সম্পাদনা বিবেচনা করুন। নীচে সবচেয়ে বেশি ভোট দেওয়া উত্তর দেখুন। আমি আপাতত আপনার উত্তরকে কমিয়ে দেব। এছাড়াও আমার মেশিনগুলিতে ডিফল্ট কোনও টিজেড এনভিভি নেই।
therealmarv

244

আপনি যদি কনসোল থেকে বোঝাতে চান তবে কেবল টাইপ করুন:

date +%Z

2
ভাল, ভাল কাজ করে।
সিলভার মুন

15
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত
ক্যালেনজি

ভাল পয়েন্ট ... সেই প্রভাবটির উত্তর পরিবর্তন করেছে
রাসমণ

এবং উবুন্টুতে কমান্ড লাইন থেকে সময় অঞ্চল নির্ধারণ করতে, নিম্নলিখিত লিঙ্কটি তুচ্ছ, 1-লাইন কমান্ড সরবরাহ করে: Askubuntu.com/a/524362/182454
ড্যান নিসেনবাউম

এটা +07আমার জন্য দেয় । পেতে Region/Cityএকটি ডেবিয়ান / আর্চ ভিত্তিক লিনাক্স এ দেখতে পান এই উত্তর
টম হালে

54

আপনি যদি সংখ্যার টাইমজোন চান:

date +'%:z %Z'

নমুনা আউটপুট:

-05:00 EST

7
ওএস এক্স-এ এই ফলাফলগুলি:z EST
সন্দেহভাজন

7
এটি যদি লিনাক্সের জন্য হয় ।
পল ভার্গাস

1
আরও স্পষ্টভাবে, এটি জিএনইউতে প্রযোজ্য date। ব্যসিবক্স সংস্করণটি আমার ক্ষেত্রে "সেনাবাহিনী:% সিইএসটি" অ-সংবেদনশীল কিছু প্রিন্ট করে।
লোও লাম

যাইহোক, তারিখ +% z ওএস এক্সে দুর্দান্ত কাজ করে I আমি আপনাকে উত্তরটি পরিবর্তন করার পরামর্শ দিই।
নিল মেহেহে

1
হাই, @ নীলমায়হে ধন্যবাদ! হুম ... তবে প্রশ্নের ট্যাগ রয়েছেlinux ubuntu-10.04
পল ভার্গাস

24

আমি পরিবর্তে "মার্কিন / পূর্ব" বা "ইউরোপ / লন্ডন" ফর্মের টাইমজোনটি সন্ধান করতে চেয়েছিলাম। আপনি এটি খুঁজে পেতে পারেন:

  • / ইত্যাদি / টাইমজোন (উবুন্টু এবং রেড হাটে উপস্থিত? তবে অ্যামাজন লিনাক্স নয়)
  • (Red Hat স্টাইল সিস্টেমগুলিতে) ZONE="US/Eastern"/ etc / sysconfig / ঘড়ির মতো
  • অথবা আপনি চেষ্টা করতে পারেন / / ইত্যাদি / স্থানীয় সময় / usr / শেয়ার / জোনিনফোর অধীনে যে কোনও একটি ফাইলের সাথে মেলাতে; বিরক্তিজনকভাবে এটি একটি সিলেমিংক বলে মনে হচ্ছে না, তবে আপনি উদাহরণস্বরূপ পারেন

    সিডি / ইউএসআর / শেয়ার / জোনিনফো
    * -type f -exec sh -c "ডিফফ -কি / ইত্যাদি / লোকালটাইম '{}'> / দেব / নাল && প্রতিধ্বনি {}" \;

    মিলে যাওয়া ফাইলগুলি খুঁজে পেতে - এটি করার সম্ভবত আরও ভাল উপায় আছে তবে এটি কার্যকর হয়। একাধিক ম্যাচ হবে।


4
find /usr/share/zoneinfo/ -type f| xargs md5sum | grep $(md5sum /etc/localtime | cut -d' ' -f1)
ফ্রেইহিট

11

উবুন্টুর জন্য এটি চেষ্টা করুন:

$ cat /etc/timezone

নমুনা আউটপুট:

Asia/Kolkata

অন্যান্য ডিস্ট্রো রেফারেন্সের জন্য: https://unix.stackexchange.com/questions/110522/imezone-setting-in-linux


কখনও কখনও timedatectl set-timezoneআপডেট হয় না/etc/timezone । ভিত্তিক একটি সমাধানের জন্য এই উত্তরটি দেখুন /etc/localtime
টম হালে

6

কখনও কখনও আপনি date %Zউদাহরণস্বরূপ উত্পাদিত সংক্ষিপ্ত ফর্মের চেয়ে ক্যানোনিকাল টাইমজোন খুঁজছেন US/Easterntimedatectlযেমন ফেডোরা সহ সিস্টেমগুলিতে 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

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

তাই আমি মাউন্টেন টাইমে আছি। যদিও পরিবেশের পরিবর্তনশীল বা জাস্ট ডেট কমান্ড আউটপুট ব্যবহারের উপরের পরামর্শগুলি কখনও কখনও আরও ভাল কাজ করে, আপনি কীভাবে এটি ব্যবহার করতে চান তা নির্ভর করে।



2
  • / etc / sysconfig / ঘড়ি হার্ডওয়্যার ঘড়িটি ইউটিসি হিসাবে সংরক্ষণ করা হয় বা স্থানীয় সময় হিসাবে সেট করে।
  • আপনার সময় অঞ্চল নির্ধারণ করতে / ইউএসআর / ভাগ / জোনিনফো / ... তে সিমলিংক / ইত্যাদি / স্থানীয় সময়।
  • /sbin/hwclock --systohc [--utc]হার্ডওয়্যার ক্লক সেট করতে টাইপ করুন ।

লিনাক্স কার্নেল সর্বদা 1 জানুয়ারী ইউটিসির মধ্যরাত থেকে সেকেন্ডের সংখ্যা হিসাবে সময় সংরক্ষণ করে এবং গণনা করে যে আপনার হার্ডওয়্যার ক্লকটি ইউটিসি হিসাবে সংরক্ষিত আছে কিনা। আপনার স্থানীয় সময়ে রূপান্তরগুলি রান-টাইমে সম্পন্ন হয়। এর সম্পর্কে একটি পরিষ্কার জিনিস হ'ল যদি কেউ আপনার কম্পিউটারকে অন্য টাইমজোন থেকে ব্যবহার করে তবে তারা টিজেড এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারে এবং সমস্ত তারিখ এবং সময় তাদের সময়সীমার জন্য সঠিক প্রদর্শিত হবে।

যদি 1970 এর 1 জানুয়ারির পরে সেকেন্ডের সংখ্যা ইউটিসি স্বাক্ষরিত 32-বিট পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা হয় (এটি আপনার লিনাক্স / ইন্টেল সিস্টেমে রয়েছে), আপনার ঘড়িটি 2038 সালে কিছুটা কাজ বন্ধ করে দেবে Linux লিনাক্সের সহজাত Y2K সমস্যা নেই , তবে এটিতে এক বছর সমস্যা আছে। আশা করি ততক্ষণে আমরা সকলেই 64৪-বিট সিস্টেমে লিনাক্স চালাব। -৪-বিট পূর্ণসংখ্যা প্রায় ২৯২২71১১ মিলিয়ন বছর অবধি আমাদের ঘড়িগুলি বেশ ভালভাবে চলতে থাকবে।


1

কয়েকটি সমাধান:

date +"%Z %z"
timedatectl | grep "Time zone"
cat /etc/timezone

আমাকে দিয়েছেন (যথাক্রমে):

UTC +0000
Time zone: Etc/UTC (UTC, +0000)
Etc/UTC

আমার কম্পিউটারটি ইউটিসি-তে রয়েছে।


0

টিজেড বা তারিখ ব্যবহার করা নির্ভরযোগ্য নয় কারণ এটি আপনাকে ব্যবহারকারীর টাইমজোনটি জানিয়েছে, ডিফল্ট সিস্টেমের সময় অঞ্চল নয়।

ডিফল্ট সিস্টেম টাইমজোনটি / ইত্যাদি / টাইমজোন (যা প্রায়শই টাইমজোন নির্দিষ্ট সময় অঞ্চল ডেটা ফাইলের প্রতীকী লিঙ্ক হয়) সংরক্ষণ করা হয়। আপনার যদি / ইত্যাদি / সময় অঞ্চল না থাকে তবে / ইত্যাদি / স্থানীয় সময় দেখুন at সাধারণত এটি হ'ল "সার্ভারের" টাইমজোন। / ইত্যাদি / লোকালটাইম প্রায়শই / ইউএসআর / শেয়ার / জোনিনফো-তে টাইমজোন ফাইলের একটি সিমিলিংক। সঠিক সময় অঞ্চল ফাইলের সেই পথটি আপনাকে প্রায়শই ভূগোলের তথ্য দেয়।

নতুন লিনাক্সের "টাইমডেটেক্টল" রয়েছে যা কমান্ডটি চালানোর সময় আপনাকে প্রচুর পরিমাণে তথ্য দেয়।

(সাইড-নোড হিসাবে, যদি আপনার কাছে এমন একটি প্রাচীন সিস্টেম থাকে যা এখনও ওএলডি হার্ড-কোডড টাইমজোন ব্যবহার করে তবে আপনি সম্ভবত এটিতে একটি আধুনিক টাইমজোন ফাইলটি অনুলিপি করতে পারেন এবং এটি কার্যকর হবে time সময় পরিবর্তন করার সময় পরিবর্তন করার সমাধান করার জন্য আমাকে অনেকবার এটি করতে হয়েছিল) পুরানো সরঞ্জামে)।


0

কখনও কখনও timedatectl set-timezoneআপডেট হয় না/etc/timezone , তাই ফাইলের নাম থেকে টাইমজোন পাওয়া ভাল যা সিমলিংকটি /etc/timezoneনির্দেশ করে:

#!/bin/bash
set -euo pipefail

if filename=$(readlink /etc/localtime); then
    # /etc/localtime is a symlink as expected
    timezone=${filename#*zoneinfo/}
    if [[ $timezone = "$filename" || ! $timezone =~ ^[^/]+/[^/]+$ ]]; then
        # not pointing to expected location or not Region/City
        >&2 echo "$filename points to an unexpected location"
        exit 1
    fi
    echo "$timezone"
else  # compare files by contents
    # https://stackoverflow.com/questions/12521114/getting-the-canonical-time-zone-name-in-shell-script#comment88637393_12523283
    find /usr/share/zoneinfo -type f ! -regex ".*/Etc/.*" -exec \
        cmp -s {} /etc/localtime \; -print | sed -e 's@.*/zoneinfo/@@' | head -n1
fi

তথ্যসূত্র: এই উত্তরে


0

আপনি একই সাথে তারিখ এবং সময় অঞ্চলটি প্রদর্শন করতে পারেন:

date +'%d/%m/%Y  %H:%M:%S [%:z  %Z]'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.