লিনাক্সে বর্তমানে আমি কোন টাইম জোনে রয়েছি তা যাচাই করার কোনও উপায় আছে?
লিনাক্সে বর্তমানে আমি কোন টাইম জোনে রয়েছি তা যাচাই করার কোনও উপায় আছে?
উত্তর:
সাধারণত, TZ
পরিবেশের পরিবর্তনশীল আপনাকে দরকারী কিছু বলবে। তবে ফাংশন ব্যবহার করা যেমন mktime()
এবং স্থানীয় সময় অঞ্চল প্রতিনিধির localtime()
মধ্যে রূপান্তর time_t
করা ভাল। অর্থাৎ রূপান্তরটি নিজেই করার চেষ্টা করবেন না ।
date
আপনাকে বলব।
echo $TZ
আমার জন্য কিছুই ফিরিয়ে দেয় না।
আপনি যদি কনসোল থেকে বোঝাতে চান তবে কেবল টাইপ করুন:
date +%Z
আপনি যদি সংখ্যার টাইমজোন চান:
date +'%:z %Z'
নমুনা আউটপুট:
-05:00 EST
:z EST
date
। ব্যসিবক্স সংস্করণটি আমার ক্ষেত্রে "সেনাবাহিনী:% সিইএসটি" অ-সংবেদনশীল কিছু প্রিন্ট করে।
linux
ubuntu-10.04
আমি পরিবর্তে "মার্কিন / পূর্ব" বা "ইউরোপ / লন্ডন" ফর্মের টাইমজোনটি সন্ধান করতে চেয়েছিলাম। আপনি এটি খুঁজে পেতে পারেন:
ZONE="US/Eastern"
/ etc / sysconfig / ঘড়ির মতোঅথবা আপনি চেষ্টা করতে পারেন / / ইত্যাদি / স্থানীয় সময় / usr / শেয়ার / জোনিনফোর অধীনে যে কোনও একটি ফাইলের সাথে মেলাতে; বিরক্তিজনকভাবে এটি একটি সিলেমিংক বলে মনে হচ্ছে না, তবে আপনি উদাহরণস্বরূপ পারেন
সিডি / ইউএসআর / শেয়ার / জোনিনফো
* -type f -exec sh -c "ডিফফ -কি / ইত্যাদি / লোকালটাইম '{}'> / দেব / নাল && প্রতিধ্বনি {}" \;
মিলে যাওয়া ফাইলগুলি খুঁজে পেতে - এটি করার সম্ভবত আরও ভাল উপায় আছে তবে এটি কার্যকর হয়। একাধিক ম্যাচ হবে।
find /usr/share/zoneinfo/ -type f| xargs md5sum | grep $(md5sum /etc/localtime | cut -d' ' -f1)
উবুন্টুর জন্য এটি চেষ্টা করুন:
$ cat /etc/timezone
নমুনা আউটপুট:
Asia/Kolkata
অন্যান্য ডিস্ট্রো রেফারেন্সের জন্য: https://unix.stackexchange.com/questions/110522/imezone-setting-in-linux
timedatectl set-timezone
আপডেট হয় না/etc/timezone
। ভিত্তিক একটি সমাধানের জন্য এই উত্তরটি দেখুন /etc/localtime
।
কখনও কখনও আপনি 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
সময় অঞ্চলটির জন্য, আপনি ভূ-অবস্থান ব্যবহার করতে পারেন:
$ curl https://ipapi.co/timezone
America/Chicago
বা:
$ curl http://ip-api.com/line?fields=timezone
America/Chicago
/sbin/hwclock --systohc [--utc]
হার্ডওয়্যার ক্লক সেট করতে টাইপ করুন ।লিনাক্স কার্নেল সর্বদা 1 জানুয়ারী ইউটিসির মধ্যরাত থেকে সেকেন্ডের সংখ্যা হিসাবে সময় সংরক্ষণ করে এবং গণনা করে যে আপনার হার্ডওয়্যার ক্লকটি ইউটিসি হিসাবে সংরক্ষিত আছে কিনা। আপনার স্থানীয় সময়ে রূপান্তরগুলি রান-টাইমে সম্পন্ন হয়। এর সম্পর্কে একটি পরিষ্কার জিনিস হ'ল যদি কেউ আপনার কম্পিউটারকে অন্য টাইমজোন থেকে ব্যবহার করে তবে তারা টিজেড এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারে এবং সমস্ত তারিখ এবং সময় তাদের সময়সীমার জন্য সঠিক প্রদর্শিত হবে।
যদি 1970 এর 1 জানুয়ারির পরে সেকেন্ডের সংখ্যা ইউটিসি স্বাক্ষরিত 32-বিট পূর্ণসংখ্যা হিসাবে সংরক্ষণ করা হয় (এটি আপনার লিনাক্স / ইন্টেল সিস্টেমে রয়েছে), আপনার ঘড়িটি 2038 সালে কিছুটা কাজ বন্ধ করে দেবে Linux লিনাক্সের সহজাত Y2K সমস্যা নেই , তবে এটিতে এক বছর সমস্যা আছে। আশা করি ততক্ষণে আমরা সকলেই 64৪-বিট সিস্টেমে লিনাক্স চালাব। -৪-বিট পূর্ণসংখ্যা প্রায় ২৯২২71১১ মিলিয়ন বছর অবধি আমাদের ঘড়িগুলি বেশ ভালভাবে চলতে থাকবে।
টিজেড বা তারিখ ব্যবহার করা নির্ভরযোগ্য নয় কারণ এটি আপনাকে ব্যবহারকারীর টাইমজোনটি জানিয়েছে, ডিফল্ট সিস্টেমের সময় অঞ্চল নয়।
ডিফল্ট সিস্টেম টাইমজোনটি / ইত্যাদি / টাইমজোন (যা প্রায়শই টাইমজোন নির্দিষ্ট সময় অঞ্চল ডেটা ফাইলের প্রতীকী লিঙ্ক হয়) সংরক্ষণ করা হয়। আপনার যদি / ইত্যাদি / সময় অঞ্চল না থাকে তবে / ইত্যাদি / স্থানীয় সময় দেখুন at সাধারণত এটি হ'ল "সার্ভারের" টাইমজোন। / ইত্যাদি / লোকালটাইম প্রায়শই / ইউএসআর / শেয়ার / জোনিনফো-তে টাইমজোন ফাইলের একটি সিমিলিংক। সঠিক সময় অঞ্চল ফাইলের সেই পথটি আপনাকে প্রায়শই ভূগোলের তথ্য দেয়।
নতুন লিনাক্সের "টাইমডেটেক্টল" রয়েছে যা কমান্ডটি চালানোর সময় আপনাকে প্রচুর পরিমাণে তথ্য দেয়।
(সাইড-নোড হিসাবে, যদি আপনার কাছে এমন একটি প্রাচীন সিস্টেম থাকে যা এখনও ওএলডি হার্ড-কোডড টাইমজোন ব্যবহার করে তবে আপনি সম্ভবত এটিতে একটি আধুনিক টাইমজোন ফাইলটি অনুলিপি করতে পারেন এবং এটি কার্যকর হবে time সময় পরিবর্তন করার সময় পরিবর্তন করার সমাধান করার জন্য আমাকে অনেকবার এটি করতে হয়েছিল) পুরানো সরঞ্জামে)।
কখনও কখনও 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
তথ্যসূত্র: এই উত্তরে ।
আপনি একই সাথে তারিখ এবং সময় অঞ্চলটি প্রদর্শন করতে পারেন:
date +'%d/%m/%Y %H:%M:%S [%:z %Z]'