परिचय और मुख्य उपयोग
लिनक्स एनवायरनमेंट में सिस्टम क्लॉक को मॉनिटर करने और तारीख के फॉर्मेट को अपनी ज़रूरत के अनुसार ढालने के लिए date कमांड एक बेहद ताकतवर टूल है। बुनियादी सिंटैक्स से लेकर एडवांस्ड पैरामीटर्स तक, यह टूल बैकअप टास्क ऑटोमेशन, लॉग फाइलों के सटीक टाइमस्टैम्पिंग और टाइमजोन कन्वर्जन में अहम भूमिका निभाता है। इस गाइड में हम प्रोडक्शन सर्वर पर काम आने वाले व्यावहारिक उदाहरणों के साथ इसके इस्तेमाल को समझेंगे।
सिस्टम समय देखना और कस्टम फॉर्मेट तैयार करना
टर्मिनल पर बिना किसी अतिरिक्त फ्लैग के केवल date टाइप करने पर सिस्टम का वर्तमान दिन, तारीख, समय, टाइमज़ोन और वर्ष डिफ़ॉल्ट लेआउट में स्क्रीन पर आ जाता है।
⚙️ [ज़रूरी ऑप्शंस]
-d, --date=STRING : वर्तमान समय की जगह आपके द्वारा दिए गए किसी खास स्ट्रिंग के आधार पर समय की गणना करता है।-s, --set=STRING : सिस्टम की क्लॉक और कैलेंडर को नए मान पर सेट करता है।-u, --utc : लोकल टाइमज़ोन को छोड़कर यूनिवर्सल कोऑर्डिनेटेड टाइम (UTC) दिखाता है।-r, --reference=FILE : सिस्टम क्लॉक की जगह किसी विशिष्ट फाइल के अंतिम मॉडिफिकेशन टाइम को प्रदर्शित करता है।-I, --iso-8601[=FMT] : अंतरराष्ट्रीय ISO 8601 मानक के अनुसार तारीख और समय फॉर्मेट करता है।

कस्टम लेआउट पाने के लिए कमांड के आगे + सिंबल जोड़कर फॉर्मेट स्पेसिफायर्स का इस्तेमाल किया जाता है। जैसे YYYY-MM-DD HH:MM:SS स्ट्रक्चर पाने के लिए %Y (4-अंकों का वर्ष), %m (महीना), %d (तारीख), %H (24-घंटे का प्रारूप), %M (मिनट), और %S (सेकंड) को एक साथ व्यवस्थित किया जा सकता है। यह फॉर्मेट एप्लिकेशन लॉग्स और रिलेशनल डेटाबेस एंट्रीज के लिए सबसे मुफीद माना जाता है।

जब बैकअप आर्काइव या सर्वर लॉग्स तैयार करने हों, तो ऐसे नाम बेहतर होते हैं जिनमें कोई खाली जगह (स्पेस) या विशेष चिह्न न हों। केवल अंकों और अंडरस्कोर (_) को जोड़कर एक सुरक्षित स्ट्रिंग तैयार की जा सकती है, जिससे फाइल सिस्टम में स्क्रिप्टिंग संबंधी गलतियों की कोई गुंजाइश नहीं रहती और पुरानी फाइलें ओवरराइट होने से बची रहती हैं।

यदि आप एडमिनिस्ट्रेटिव ईमेल या सिस्टम स्टेटस रिपोर्ट के लिए इंसानों द्वारा आसानी से पढ़े जा सकने वाले वाक्य जैसा आउटपुट चाहते हैं, तो %A और %B का प्रयोग करें। यहाँ %A सप्ताह का पूरा दिन (जैसे Saturday) और %B महीने का पूरा नाम (जैसे October) प्रिंट करता है।

पिछली या अगली तारीखों की गणना और टाइमज़ोन बदलना
क्लाउड इन्फ्रास्ट्रक्चर और डिस्ट्रीब्यूटेड क्लस्टर्स में सभी नोड्स के लॉग्स को एक समान समय रेखा पर सिंक करने के लिए UTC मानक का पालन किया जाता है। -u फ्लैग लोकल टाइमज़ोन की बाधा को हटाकर सीधे समन्वित वैश्विक समय दिखाता है।

बिना सर्वर की ग्लोबल टाइमज़ोन सेटिंग को छेड़े, केवल एक सेशन के लिए किसी खास शहर का समय देखना हो तो TZ एनवायरनमेंट वेरिएबल का अस्थायी प्रयोग किया जाता है। रिमोट डेटा सेंटर के संचालन समय की जांच करने के लिए यह एक त्वरित समाधान है।

-d फ्लैग प्राकृतिक भाषा के शब्दों को बखूबी समझता है। उदाहरण के लिए 'yesterday' पास करके बीती हुई तारीख निकाली जा सकती है, जो आधी रात के बाद चलने वाली डेली डेटा प्रोसेसिंग और रोटेशन जॉब्स में अत्यधिक उपयोगी है।

पुरातन डेटा क्लीनअप या 7 दिन पुरानी लॉग फाइलों को आर्काइव करने के लिए आप सीधे '7 days ago' जैसा रिलेटिव एक्सप्रेशन दे सकते हैं। इससे ऑटो-पर्ज स्क्रिप्ट्स बहुत सरल बन जाती हैं।

सप्ताह के आगामी दिनों की तारीख तय करने के लिए 'next Monday' जैसे एक्सप्रेशन्स भी सीधे काम करते हैं। इसका इस्तेमाल वीकली मेंटेनेंस शेड्यूल और आवधिक क्रॉन जॉब्स के ऑटोमेशन में बहुत आसानी से किया जा सकता है।

ऑटोमेटेड बैकअप स्क्रिप्ट और टाइमस्टैम्प आधारित फाइल नामकरण
प्रैक्टिकल लैब के लिए सबसे पहले एक सुरक्षित अस्थायी डायरेक्टरी तैयार करके उस लोकेशन पर स्विच करते हैं: mkdir -p /tmp/backup_demo && cd /tmp/backup_demo।

परीक्षण के उद्देश्य से एक डमी कॉन्फ़िगरेशन फ़ाइल बना लेते हैं: echo 'Application configuration data' > config.ini।

कमांड सब्स्टीट्यूशन सिंटैक्स ($()) का प्रयोग करके date '+%Y%m%d_%H%M%S' के आउटपुट को BACKUP_TAG नाम के वेरिएबल में सुरक्षित कर लिया जाता है। इस वेरिएबल में अब साल, महीना, दिन और समय का एक यूनिक स्ट्रिंग तैयार है।

तैयार किए गए वेरिएबल को आर्काइव के नाम में शामिल करते हुए टारबॉल जनरेट करते हैं: tar -czf "config_backup_${BACKUP_TAG}.tar.gz" config.ini। इससे फाइल के नाम को देखते ही पता चल जाता है कि बैकअप किस पल लिया गया था।

ls -l config_backup_*.tar.gz रन करके डायरेक्टरी लिस्टिंग देखें। आउटपुट में config_backup_20261024_174030.tar.gz जैसी अलग और यूनिक फाइल दिखाई देगी, जो साबित करती है कि कई बार बैकअप चलने पर भी पुराना डेटा सुरक्षित रहेगा।

Unix टाइमस्टैम्प (Epoch) कन्वर्जन और निष्पादन समय मापना
1 जनवरी 1970 00:00:00 UTC से अब तक बीते कुल सेकंड्स को Unix Epoch कहा जाता है। इसे प्राप्त करने के लिए date +%s निष्पादित किया जाता है। प्रोग्रामिंग लॉजिक और डेटाबेस प्राइमरी कीज़ में समय की तुलना करने के लिए यह इंटीजर सबसे सटीक माना जाता है।

यदि लॉग्स में कोई न्यूमेरिक Epoch वैल्यू (जैसे 1700000000) दर्ज है, तो उसे इंसानों के पढ़ने योग्य रूप में बदलने के लिए वैल्यू से पहले @ लगाकर -d फ्लैग के साथ पास करें। यह सिंबल लिनक्स को बताता है कि इनपुट कोई साधारण टेक्स्ट नहीं बल्कि टाइमस्टैम्प है।

किसी टास्क या बैच प्रोसेस के निष्पादन समय की सटीक मॉनिटरिंग के लिए %s%N के ज़रिए नैनोसेकंड स्तर की टाइमिंग दर्ज की जा सकती है। शेल के अंकगणितीय ऑपरेटर $(( )) द्वारा शुरुआत और समाप्ति के अंतर को मिलीसेकंड (ms) में बदलकर परफॉर्मेंस प्रोफाइलिंग आसानी से की जाती है।

इस गाइड में हमने लिनक्स date यूटिलिटी के फंडामेंटल सिंटैक्स, डायनामिक डेट कैलकुलेशन, बैकअप नेमिंग पैटर्न्स और यूनिक्स इपॉक के व्यवहार को विस्तार से समझा। इन तकनीकों को अपनी शेल स्क्रिप्ट्स में शामिल करके आप अपने इंफ्रास्ट्रक्चर के ऑटोमेशन को अधिक मजबूत और पारदर्शी बना सकते हैं।