इस लेख में, हम आपको दिखाएंगे कि CentOS Linux में समय, दिनांक, टाइमज़ोन कैसे सेट करें, NTP सर्वर के साथ समय सिंक्रनाइज़ करें और सामान्य समस्याओं को ठीक करें।
सर्वर पर दो प्रकार की घड़ियाँ होती हैं: हार्डवेयर वाली (रियल-टाइम क्लॉक) जो सर्वर बंद होने पर भी काम करती हैं और ऑपरेटिंग सिस्टम सॉफ़्टवेयर क्लॉक। इन घड़ियों पर समय भिन्न हो सकता है। ऑपरेटिंग सिस्टम शुरू होने के बाद, सॉफ़्टवेयर क्लॉक हार्डवेयर वाली पर आधारित होती है और OS द्वारा एडजस्ट की जा सकती है। अधिकांश एप्लिकेशन अपने ऑपरेशन में सॉफ़्टवेयर क्लॉक समय का उपयोग करते हैं।
Hwclock: हार्डवेयर समय कॉन्फिगरेशन
Hwclock का उपयोग Linux में हार्डवेयर समय चेक करने के लिए किया जाता है:
hwclock --localtime— बिना करेक्शन के हार्डवेयर समय चेक करेंhwclock --utc— यदि हार्डवेयर क्लॉक UTC समय दिखाती है तो समय प्रदर्शित करता है
# hwclock --localtime
2020-10-12 06:12:02.912866-04:00
# hwclock --utc
2020-10-12 02:12:18.915319-04:00
हार्डवेयर समय को सिस्टम समय के अनुसार सेट करने के लिए, यह कमांड चलाएं:
# hwclock --systohc
आपके द्वारा चाहने वाले हार्डवेयर समय को सेट करने के लिए, निम्न चलाएं:
# hwclock --set --date "11 Oct 2020 17:30"

CentOS में मैन्युअल समय कॉन्फिगरेशन
Linux में, सॉफ़्टवेयर समय चेक और सेट करने के लिए date या timedatectl टूल का उपयोग किया जाता है। यदि आप बिना किसी पैरामीटर के date कॉल करते हैं, तो यह आपके सर्वर पर वर्तमान समय दिखाएगा:
# date
Sun Oct 11 22:14:54 EDT 2020
यदि आप मैन्युअल रूप से समय सेट करना चाहते हैं, तो आप अतिरिक्त पैरामीटर के साथ date का उपयोग कर सकते हैं:
# date MMDDhhmm
उदाहरण के लिए:
# date 10261740

दिनांक, समय, टाइमज़ोन, सिंक्रनाइज़ेशन सेटिंग्स, डे-लाइट सेविंग टाइम सेटिंग्स (DST) के बारे में विस्तृत जानकारी प्राप्त करने के लिए, timedatectl का उपयोग किया जाता है। यह सर्वर पर समय सेटिंग्स के बारे में अधिक विस्तृत जानकारी देता है।

Timedatectl समय बदलने की भी अनुमति देता है:
# timedatectl set-time '2020-10-11 17:51:00'
CentOS में टाइमज़ोन कैसे सेट करें?
CentOS Linux पर अपने टाइमज़ोन के अनुसार समय सेट करने के लिए, आप इसे मैन्युअल रूप से बदल सकते हैं। इसके लिए आप दो टूल का उपयोग कर सकते हैं:
- timedatectl
- tzdata
timedatectl का उपयोग करके टाइम ज़ोन बदलने के लिए, यह कमांड चलाएं:
# timedatectl set-timezone Canada/Pacific
# date

या आप tzdata का उपयोग कर सकते हैं। इस मेथड का उपयोग करने के लिए, फ़ाइल /etc/localtime को अपनी आवश्यकता वाले से रिप्लेस करें। टाइम ज़ोन की पूरी सूची /usr/share/zoneinfo/ डायरेक्टरी में स्थित है। आइए टाइमज़ोन को Canada/Pacific में बदलें। वर्तमान locatime फ़ाइल का बैकअप लें:
# mv /etc/localtime /etc/localtime.bak
आपके द्वारा सेट किए जाने वाले टाइमज़ोन के लिए एक सिमलिंक बनाएं:
# ln -s /usr/share/zoneinfo/Canada/Pacific /etc/localtime
CentOS को NTP टाइम सर्वर के साथ समय सिंक करने के लिए कॉन्फिगर करें
आप अपने होस्ट पर एक एक्सटर्नल NTP (Network Time Protocol) सर्वर के साथ ऑटोमैटिक समय सिंक्रनाइज़ेशन कॉन्फिगर कर सकते हैं। ऐसा करने के लिए, आपको ntp सर्विस इंस्टॉल करनी होगी। उदाहरण के लिए, आप CentOS 7 में yum का उपयोग करके इसे इंस्टॉल कर सकते हैं:
# yum install ntp -y
इंस्टॉलेशन के बाद, ntpd सर्विस शुरू करें और इसे स्टार्टअप में जोड़ें:
# systemctl start ntpd.service
# systemctl enable ntpd.service
सुनिश्चित करें कि सर्विस चल रही है:
# service ntpd status
Redirecting to /bin/systemctl status ntpd.service ● ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2020-10-11 15:37:33 +06; 5min ago Main PID: 3057 (ntpd) CGroup: /system.slice/ntpd.service └─3057 /usr/sbin/ntpd -u ntp:ntp -g
/etc/ntp.conf में उन NTP सर्वर को निर्दिष्ट करें जिनके साथ आप समय सिंक्रनाइज़ करना चाहते हैं:
server 0.pool.ntp.org server 1.pool.ntp.org server 2.pool.ntp.org
समय क्रम में सिंक्रनाइज़ होता है। यदि पहला NTP सर्वर उपलब्ध नहीं है, तो दूसरा उपयोग किया जाता है, आदि।
आप इस कमांड का उपयोग करके निर्दिष्ट NTP सर्वर के साथ मैन्युअल रूप से समय सिंक्रनाइज़ कर सकते हैं:
# ntpdate 192.168.1.23
डिफ़ॉल्ट रूप से, ntpd "11 मिनट मोड" इनेबल करता है। इसका मतलब है कि समय हर 11 मिनट में सिंक्रनाइज़ होगा। यदि आप ntpd डेमन का उपयोग नहीं कर सकते, तो आप cron का उपयोग करके समय सिंक्रनाइज़ेशन कॉन्फिगर कर सकते हैं। Cron में निम्न कमांड जोड़ें:
# ntpdate pool.ntp.org
CentOS 8 में Chronyd का उपयोग करके समय कैसे सिंक करें?
CentOS 8 में आपको समय सिंक्रनाइज़ करने के लिए chrony का उपयोग करना होगा, क्योंकि ntp और ntpdate को आधिकारिक रिपॉजिटरी से हटा दिया गया है।
Chrony के मुख्य लाभ हैं:
- समय सिंक्रनाइज़ेशन की उच्च गति और सटीकता;
- मास्टर क्लॉक तक पहुंच न होने पर भी उचित ऑपरेशन (ntpd को नियमित अनुरोधों की आवश्यकता होती है);
- डिफ़ॉल्ट रूप से, सिंक्रनाइज़ेशन के तुरंत बाद समय मॉडिफाई नहीं किया जाता है ताकि चल रहे प्रोग्राम के लिए कोई समस्या न हो;
- कम संसाधनों का उपयोग करता है।
डिफ़ॉल्ट रूप से, chrony CentOS Linux में पहले से इंस्टॉल होता है, लेकिन यदि किसी कारण से आपके पास यह नहीं है, तो इसे इंस्टॉल करें:
# dnf install chrony
किसी अन्य सर्विस की तरह, इंस्टॉलेशन के बाद chrony को शुरू करने और स्टार्टअप में जोड़ने की आवश्यकता होती है:
# systemctl start chronyd
# systemctl enable chronyd
Chryd सर्विस स्टेटस चेक करें:
# systemctl status chronyd

यह सुनिश्चित करने के लिए कि समय सिंक्रनाइज़ेशन काम कर रहा है, यह कमांड चलाएं:
# timedatectl status
NTP Service: active

Chrony कॉन्फिगरेशन फ़ाइल /etc/chrony.conf है। उन NTP सर्वर की सूची निर्दिष्ट करें जिनका आप सिंक्रनाइज़ेशन के लिए उपयोग करना चाहते हैं। ntp की तरह, chrony का कमांड-लाइन इंटरफ़ेस है: chronyc। वर्तमान समय सिंक्रनाइज़ेशन विकल्पों के बारे में जानकारी देखने के लिए, यह कमांड चलाएं:
# chronyc tracking
सिंक सर्वर के बारे में जानकारी देखने के लिए:
# chronyc sources
यदि आप मैन्युअल रूप से विशिष्ट दिनांक और समय सेट करना चाहते हैं, तो आप date का उपयोग कर सकते हैं, लेकिन पहले chronyd डेमन को डिसेबल करें।
CentOS में सामान्य समय सिंक समस्याएं
इस सेक्शन में, मैं timedatectl, ntp के साथ काम करते समय दिखाई देने वाली सामान्य एरर का वर्णन करूंगा।
मैन्युअल समय सिंक्रनाइज़ेशन के दौरान आप इस एरर का सामना कर सकते हैं:
# ntpdate pool.ntp.org
ntpdate [26214]: the NTP socket is in use, exiting
इसका मतलब है कि ntpd डेमन चल रहा है और मैन्युअल समय सिंक्रनाइज़ेशन को रोक रहा है। मैन्युअल रूप से समय सिंक्रनाइज़ करने के लिए, ntpd डेमन रोकें:
# service ntpd stop
और सिंक्रनाइज़ेशन फिर से चलाएं।
Timedatectl के साथ काम करते समय वही एरर हो सकती है:
Failed to set time: Automatic time synchronization is enabled.
आपको timedatectl में ऑटोमैटिक सिंक डिसेबल करना होगा:
# timedatectl set-ntp 0
और आपके द्वारा चाहने वाले समय और दिनांक को सेट करने के लिए यह कमांड चलाएं:
# timedatectl set-time '2020-11-12 17:41:00'
टाइम ज़ोन के साथ काम करते समय, ऐसा हो सकता है कि वे आपके सर्वर पर इंस्टॉल न हों और आप localtime के लिए सिमलिंक न बना सकें। अपने होस्ट पर टाइम ज़ोन उपलब्ध कराने के लिए, tzdata टूल इंस्टॉल करें:
# yum install tzdata -y
साथ ही, मैन्युअल सिंक्रनाइज़ेशन के दौरान आपको निम्न जैसी कुछ एरर का सामना करना पड़ सकता है:
11 Oct 21:11:19 ntpdate[897482]: sendto(xx.xx.xx.98): Operation not permitted
इस मामले में, अपने firewalld/iptables नियम चेक करें और सुनिश्चित करें कि आपके सर्वर पर UDP पोर्ट 123 खुला है। साथ ही, कुछ NTP होस्ट वैलिडेशन के दौरान उपलब्ध नहीं हो सकते हैं।