किसी फ़ाइल के सभी टाइमस्टैम्प की जांच कैसे करें?


52

क्या किसी फ़ाइल के सभी टाइमस्टैम्प की जांच करने के लिए लिनक्स में एक कमांड है?

मैं फ़ाइल पर अंतिम संशोधित, निर्मित और छुआ दिनांक देखने का प्रयास कर रहा हूं।


4
बस इंगित करने के लिए, लिनक्स फाइलों में जन्म की तारीख नहीं है। इस प्रकार, यह निर्धारित करना संभव नहीं है कि फ़ाइल किस दिनांक को बनाई गई थी।
FatalError

उस पर ध्यान दिया = (धन्यवाद! यह मुझे इंगित करने के लिए धन्यवाद।
मेकफ्लाश

4
@ फैटलएयर: विभिन्न फाइलसिस्टम पहले से ही जन्म / निर्माण टाइमस्टैम्प का समर्थन करते हैं; असली परेशानी ऐसी अतिरिक्त जानकारी तक पहुँचने में है । (एक struct statचीजों को तोड़ने के बिना विस्तार नहीं किया जा सकता है , दुर्भाग्य से ...) आप एक इनो के साथ debugfs -R "stat <1234>" /dev/sdXYबदलने, ext4 के लिए बाहर की कोशिश कर सकते हैं 1234
गुरुत्व

@ शुद्धता: नीट! मैं हमेशा सोचता था कि कोई fs क्यों नहीं था ... लेकिन मुझे लगता है कि वे करते हैं, लेकिन जैसा कि आपने कहा था, बस दो अलग-अलग वेतन के लिए एबीआई को तोड़ने नहीं जा सकता। पारितोषिक के लिए धन्यवाद :)।
FatalError

1
@FatalError, जन्म का समय लिनक्स statकमांड के साथ प्रदर्शित किया जा सकता है , देखें कि फाइल की निर्माण तिथि कैसे पता करें? और लिनक्स पर किस फाइल सिस्टम के निर्माण का समय है?
फ्रैंकलिन पिअट

जवाबों:


73

आज्ञा कहलाती है stat

$ stat test
234881026 41570368 -rw-r--r-- 1 werner staff 0 0 "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" "Feb  7 16:03:06 2012" 4096 0 0 test

यदि आप प्रारूप को समायोजित करना चाहते हैं, तो मैन पेजों को देखें, क्योंकि आउटपुट ओएस-विशिष्ट है और लिनक्स / यूनिक्स के तहत बदलता है।

आम तौर पर, आप सामान्य निर्देशिका सूची के माध्यम से भी समय प्राप्त कर सकते हैं:

  • ls -l पिछली बार जब फ़ाइल सामग्री संशोधित की गई थी, तो आउटपुट mtime
  • ls -lcफ़ाइल स्थिति संशोधन के अंतिम समय में आउटपुट, ctime( क्या अंतर है? )
  • ls -luआउटपुट अंतिम समय तक पहुँचता है, atime(हालाँकि इस अवधारणा की उपयोगिता चर्चा के अधीन है )

और निश्चित रूप से, ctimeरिकॉर्ड नहीं करता है जब एक फ़ाइल "बनाई गई" थी। POSIX विनिर्देश केवल तीन टाइमस्टैम्प को परिभाषित करता है, लेकिन कुछ लिनक्स फाइल सिस्टम जन्म समय / निर्माण समय को संग्रहीत करते हैं। फाइल की निर्माण तिथि कैसे पता करें? ऐसे समर्थित कॉन्फ़िगरेशन पर, कोई भी उपयोग कर सकता है

stat --printf '%n\nmtime: %y\nctime: %z\natime: %x\ncrtime:%w\n'

statवास्तव में विस्तृत है। लेकिन lsकेवल एक लाइन की जरूरत है। यह अच्छा होगा यदि यह सेकंड भी प्रदर्शित कर सके। हालाँकि, फ़ाइलों की सूची बनाते समय, पूर्व वाला पूरी तरह उपयुक्त है।
neverMind9

ls -l मेरे लिए त्वरित समाधान था
एंड्रयू

मैंने देखा है कि ls -lबिजीबॉक्स स्थापित होने पर (एंड्रॉइड पर) एक अलग दिनांक प्रारूप दिखा सकता है। मुझे लगता है कि इसके बिना, यह "2019-07-26 14:41" जैसा है, और इसके साथ, यह "6 मई 21:27" जैसा है। वर्ष कैसे याद आ रहा है? क्या इसके बिना प्रारूप का उपयोग करने के लिए मजबूर करने का एक तरीका है?
Android डेवलपर

@androiddeveloper जैसा मैंने कहा, जवाब OS पर निर्भर करता है। मुझे लगता है कि आपको एक नया प्रश्न खोलना चाहिए। यदि आप विशेष रूप से एंड्रॉइड के बारे में बात कर रहे हैं, तो शायद स्टैक ओवरफ्लो या एंड्रॉइड उत्साही अधिक उपयुक्त होंगे।
slhck

@ एसएलएचक वैसे यह ओएस है, बस बिजीबॉक्स स्थापित है। मैंने पूछा कि क्या यह संभव है (इसका अर्थ है: उपयोग करने के लिए एक कमांड है) जो प्रारूप दिखाया जाएगा।
Android डेवलपर

21

आपकी फ़ाइलों में से प्रत्येक के लिए केवल तीन अलग-अलग मान संग्रहीत हैं, जैसे कि POSIX मानक द्वारा परिभाषित : http://pubs.opengroup.org/onlinepubs/9699919799/ ( आधार परिभाषा अनुभाग देखें -> 4. सामान्य अवधारणाएँ -> 4.8 फ़ाइल टाइम्स अपडेट)

प्रत्येक फ़ाइल में तीन अलग-अलग संबद्ध टाइमस्टैम्प्स होते हैं: अंतिम डेटा एक्सेस का समय, अंतिम डेटा संशोधन का समय और फ़ाइल का समय बदल जाता है । फ़ाइल मान संरचना संरचना स्टेट में ये मान लौटाए गए हैं, जैसा कि <sys / stat.h> में वर्णित है ।

और <sys / stat.h> से :

atime is for Last data access timestamp.
mtime is for Last data modification timestamp.
ctime is for Last file status change timestamp.

उदाहरण शो के बाद के बीच अंतर atime , mtime और ctime , इन उदाहरणों जीएनयू / लिनक्स मार रहे हैं। आप stat -xमैक ओएस एक्स या अन्य बीएसडी डिस्ट में उपयोग कर सकते हैं । समान आउटपुट स्वरूप देखने के लिए।

$ stat --version
stat (GNU coreutils) 8.4
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Michael Meskes.
$
$ touch test
$ stat test
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:58:28.609223953 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800

जब फ़ाइल बनाई जाती है, तो तीन टाइमस्टैम्प समान होते हैं।


1. अतीम

सबसे पहले, चलो का उपयोग फ़ाइल के डेटा इसे पढ़ने (द्वारा lessया vim), यह पता मुद्रण ( cat) एक और फाइल करने के लिए या इसे कॉपी ( cp)।

$ cat test #Nothing will be printed out, since the file is empty
$ stat test
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0664/-rw-rw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800  <-- atime Changed!
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 10:58:28.609223953 +0800

2. समय

अब चलो चलो बदलने , फ़ाइल स्थिति अनुमति (बदलकर chmod) या इसका नाम ( mv)

$ chmod u+x test
$ stat stet
  File: `test'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:04:10.178285430 +0800  <-- ctime Changed!
$    
$ mv test testing
$ stat testing
  File: `testing'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 10:58:28.609223953 +0800
Change: 2014-03-16 11:06:33.342207679 +0800  <-- ctime Changed again!

ध्यान दें कि अब तक, फ़ाइल की सामग्री ( डेटा ) अभी भी वैसी ही है, जब यह बनाई गई थी।


3. माइम

अंत में, फ़ाइल को संपादित करके फ़ाइल की सामग्री को संशोधित करें।

$ echo 'Modify the DATA of the file' > testing
$ echo 'Modify the DATA of the file also change the file status' > testing
$ stat testing
  File: `testing'
  Size: 56          Blocks: 8          IO Block: 4096   regular file
Device: 811h/2065d  Inode: 98828525    Links: 1
Access: (0764/-rwxrw-r--)  Uid: (  514/    rank)   Gid: (  514/    rank)
Access: 2014-03-16 10:59:13.182301069 +0800
Modify: 2014-03-16 11:09:48.247345148 +0800  <-- mtime Changed!
Change: 2014-03-16 11:09:48.247345148 +0800  <-- ctime also Changed!

4. जन्म समय

यह भी ध्यान दें कि stat(जैसे stat --version 8.13कि Ubuntu 12.04 में) के नए संस्करण में 4 टाइमस्टैम्प की जानकारी है - जन्म समय (फ़ाइल निर्माण समय)। हालाँकि यह अभी के लिए सही समय नहीं दिखा सकता है:

$ stat --version
stat (GNU coreutils) 8.13
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Michael Meskes.
$
$ stat birth_time
  File: `birth_time'
  Size: 0           Blocks: 0          IO Block: 4096   regular empty file
Device: 805h/2053d  Inode: 4073946     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/ bingyao)   Gid: ( 1000/ bingyao)
Access: 2014-03-16 10:46:48.838718970 +0800
Modify: 2014-03-16 10:46:48.838718970 +0800
Change: 2014-03-16 10:46:48.838718970 +0800
 Birth: -

10: 46: 48.838718970 का अर्थ क्या है? HH: MM: SS। नैनोसेकंड?
डज़ुंग गुयेन

2
जी हां"कर्नेल 2.5.48 के बाद से, स्टेट स्ट्रक्चर तीन फाइल टाइमस्टैम्प फील्ड के लिए नैनोसेकंड रिज़ॉल्यूशन का समर्थन करता है ...."
टॉम लॉर्ड

यदि आवश्यक हो तो निर्माण समय को रूट एक्सेस और डीबगफ के
मकोको रैंटलैनेन

2
जन्म समय ... ख़ुशी से। क्योंकि अंतिम संशोधन और अंतिम परिवर्तन लगभग एक ही उद्देश्य के लिए है लेकिन फिर भी अलग है। यह अच्छा है, तो है सभी चार अस्तित्व।
कभी नहीं।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.