लिनक्स ऑपरेटिंग सिस्टम आपके सिस्टम पर प्रत्येक फ़ाइल के लिए तीन टाइमस्टैम्प ट्रैक करता है। ये टाइमस्टैम्प आपको यह पता लगाने में सक्षम बनाते हैं कि फ़ाइल को आखिरी बार कब अपडेट किया गया था। लेकिन उन सभी का क्या मतलब है? और आप किसी फ़ाइल के लिए ये समय कैसे पता करते हैं? क्या निर्देशिकाओं के मामले में कोई अंतर है?
atime, ctime, और mtime की समझ इन सभी सवालों का जवाब दे सकती है। ये तीन टाइमस्टैम्प हैं जो यूनिक्स फाइल सिस्टम ट्रैक करते हैं। यदि आपको कभी यह पता लगाने की आवश्यकता है कि क्या बदला और कब, तो पढ़ें।
तीन यूनिक्स टाइमस्टैम्प क्या हैं?
प्रत्येक फ़ाइल से तीन टाइमस्टैम्प जुड़े होते हैं। लिनक्स इन्हें यूनिक्स समय प्रारूप में संग्रहीत करता है जो युग के बाद से सेकंड मापता है। तीन टाइमस्टैम्प को आमतौर पर atime, ctime, और mtime के रूप में संदर्भित किया जाता है।
mtime सबसे आम और अक्सर सबसे उपयोगी है। यह modified time (संशोधित समय) के लिए खड़ा है। यह वह समय है जब फ़ाइल की सामग्री को आखिरी बार डिस्क पर लिखा गया था।
थोड़ा अलग है ctime जो change time (परिवर्तन समय) के लिए खड़ा है। यह टाइमस्टैम्प मेटाडेटा परिवर्तनों जैसे स्वामित्व और अनुमतियों को ट्रैक करता है। इसमें फ़ाइल का नाम बदलना शामिल है - कम से कम, सामान्य आधुनिक लिनक्स OS पर। लेकिन यह फ़ाइल की सामग्री बदलने पर भी अपडेट होता है, इसलिए यह हमेशा mtime जितना अप-टू-डेट होता है।
तीसरा टाइमस्टैम्प atime है, जो अंतिम समय को संग्रहीत करता है जब किसी ने फ़ाइल को एक्सेस किया था।
टाइमस्टैम्प निर्देशिकाओं पर कैसे लागू होते हैं
एक लिनक्स निर्देशिका, अनिवार्य रूप से, उस निर्देशिका में फ़ाइलों की एक सूची है। इसलिए एक निर्देशिका के अंदर एक फ़ाइल बनाने से उस निर्देशिका का mtime अपडेट होगा। ls कमांड का उपयोग करके, उदाहरण के लिए, निर्देशिका में फ़ाइलों को सूचीबद्ध करना, इसके एक्सेस समय को अपडेट करता है। और, एक फ़ाइल की तरह, निर्देशिका के अनुमतियों या नाम को बदलने से उसका ctime अपडेट होता है।
निर्माण समय के बारे में क्या?
यह जानकर आपको आश्चर्य हो सकता है कि लिनक्स बस निर्माण समय का ट्रैक नहीं रखता है। आप शुरू में मान सकते हैं कि ctime निर्माण समय के लिए खड़ा है। समान रूप से, आप इसे पता लगाने के लिए एक बहुत उपयोगी चीज़ के रूप में सोच सकते हैं।
कई एप्लिकेशन फ़ाइलों को हर बार स्क्रैच से बनाकर सहेजते हैं। इससे निर्माण समय का उपयोग भ्रामक हो जाएगा।
विभिन्न टाइमस्टैम्प कैसे देखें
टाइमस्टैम्प जानकारी प्राप्त करने का सबसे सरल तरीका ls कमांड के साथ है। डिफ़ॉल्ट लंबा प्रारूप mtime के लिए विवरण दिखाता है:
$ date
Sat Mar 6 16:57:01 GMT 2021
$ echo "hello, world" > tmp
$ ls -l tmp.txt
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp
आप -u फ्लैग का उपयोग करके atime प्रदर्शित कर सकते हैं:
$ date
Sat Mar 6 16:59:33 GMT 2021
$ cat tmp
hello, world
$ ls -lu tmp
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp
$ ls -l tmp
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp
अंतिम पुष्टि करता है कि इस फ़ाइल का mtime atime से अलग है। अंत में, ctime देखने के लिए -c फ्लैग का उपयोग करें:
$ date
Sat Mar 6 17:02:34 GMT 2021
$ mv tmp tmp2
$ ls -lc tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 17:02 tmp2
$ ls -l tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:57 tmp2
$ ls -lu tmp2
-rw-r--r-- 1 ubuntu ubuntu 13 2021-03-06 16:59 tmp2
इस बार, हम पुष्टि करते हैं कि सभी तीन समय अलग और सही हैं: हमने फ़ाइल को संशोधित किया, फिर एक्सेस किया, फिर बदला, उस क्रम में।
ls का एक विकल्प stat कमांड है। यह कमांड फ़ाइल के इनोड से निम्न-स्तरीय विवरण प्रदर्शित करता है। यह एक बार में तीनों समय की जांच करना आसान बनाता है। यह अनजाने -u फ्लैग की समस्या को भी हल करता है। उसी फ़ाइल के लिए एक उदाहरण आउटपुट यहां दिया गया है:
$ stat tmp2
File: `tmp2'
Size: 13 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 327688 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ ubuntu) Gid: ( 1000/ ubuntu)
Access: 2021-03-06 16:59:45.000000000 +0000
Modify: 2021-03-06 16:57:59.000000000 +0000
Change: 2021-03-06 17:02:43.000000000 +0000
टाइमस्टैम्प कैसे अपडेट करें
touch कमांड फ़ाइल के संशोधन और एक्सेस समय को बदलता है। यह एक खाली फ़ाइल बनाने का एक सुविधाजनक तरीका भी है, जो यह करेगा यदि फ़ाइल पहले से मौजूद नहीं है:
touch tmp
डिफ़ॉल्ट रूप से, यह mtime और atime को वर्तमान समय पर सेट करेगा। आप -t फ्लैग के साथ एक अलग समय सेट कर सकते हैं:
touch -t 202103061200 tmp
आप -m और -a फ्लैग का उपयोग करके केवल mtime या atime भी सेट कर सकते हैं:
touch -t 202103061300 -m tmp
ध्यान दें कि जब हम atime या mtime सेट करते हैं तो ctime हमेशा अपडेट होता है।
टाइमस्टैम्प के आधार पर फ़ाइलें कैसे खोजें
find कमांड एक और टूल है जो टाइमस्टैम्प पर कार्य करता है। यह atime, ctime, या mtime के आधार पर फ़ाइलों को फ़िल्टर कर सकता है। उदाहरण के लिए:
find . -amin 15
ठीक 15 मिनट पहले एक्सेस की गई फ़ाइलों को ढूंढेगा, जबकि:
find . -mtime -2
पिछले दो दिनों के भीतर संशोधित फ़ाइलों को ढूंढेगा।
लिनक्स हर फ़ाइल को तीन बार ट्रैक करता है
सबसे अधिक संदर्भित फ़ाइल टाइमस्टैम्प mtime है। यह वह तारीख और समय है जो फ़ाइल लिस्टिंग दिखाती है, उदाहरण के लिए। लेकिन अन्य दो टाइमस्टैम्प भी उपयोगी हो सकते हैं, बशर्ते आप समझें कि वे क्या संदर्भित कर रहे हैं। विशेष रूप से, हमेशा याद रखें कि ctime change समय दर्शाता है, creation समय नहीं।
touch और stat जैसे कमांड लिनक्स कमांड लाइन टूलबॉक्स के उपयोगी सदस्य हैं। ये कमांड आपको नई फ़ाइलें जल्दी से बनाने की अनुमति देकर आपके लिनक्स वर्कफ़्लो को बढ़ाएंगे।