Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

ทำความเข้าใจการประทับเวลาของไฟล์ Linux:mtime, ctime และ atime

ระบบปฏิบัติการ Linux ติดตามการประทับเวลาสามครั้งสำหรับแต่ละไฟล์ในระบบของคุณ การประทับเวลาเหล่านี้ช่วยให้คุณทราบได้ว่าไฟล์อัปเดตครั้งล่าสุดเมื่อใด แต่พวกเขาทั้งหมดหมายถึงอะไร? และคุณจะทราบเวลาเหล่านี้สำหรับไฟล์ได้อย่างไร เมื่อพูดถึงไดเร็กทอรีมีความแตกต่างกันหรือไม่

ความเข้าใจเกี่ยวกับ atime, ctime และ mtime สามารถตอบคำถามเหล่านี้ได้ทั้งหมด นี่คือการประทับเวลาสามครั้งที่ระบบไฟล์ Unix ติดตาม หากคุณต้องการทราบรายละเอียดเกี่ยวกับสิ่งที่เปลี่ยนแปลงและเมื่อใด โปรดอ่านต่อไป

สาม Unix Timestamps คืออะไร

แต่ละไฟล์มีการประทับเวลาที่เกี่ยวข้องสามครั้ง Linux เก็บข้อมูลเหล่านี้ไว้ในรูปแบบเวลา Unix ซึ่งวัดวินาทีนับตั้งแต่ยุค การประทับเวลาสามรายการโดยทั่วไปจะเรียกว่า atime, ctime และ mtime

mtime เป็นสิ่งที่พบได้บ่อยที่สุดและมักมีประโยชน์มากที่สุด ย่อมาจากเวลาที่ปรับเปลี่ยน . เป็นเวลาที่เนื้อหาของไฟล์ถูกเขียนลงดิสก์ครั้งล่าสุด

แตกต่างเล็กน้อยคือ เวลา ซึ่งหมายถึง เปลี่ยนเวลา . การประทับเวลานี้ติดตามการเปลี่ยนแปลงข้อมูลเมตา เช่น ความเป็นเจ้าของและการอนุญาต ซึ่งรวมถึงการเปลี่ยนชื่อไฟล์ อย่างน้อยก็บนระบบปฏิบัติการ Linux สมัยใหม่ทั่วไป แต่ยังอัปเดตเมื่อเนื้อหาของไฟล์เปลี่ยนแปลง ดังนั้นจึงเป็นข้อมูลล่าสุดเสมอเหมือน mtime

การประทับเวลาที่สามคือ เวลา ซึ่งเก็บครั้งสุดท้ายที่ทุกคนเข้าถึงไฟล์

การประทับเวลาใช้กับไดเรกทอรีอย่างไร

ไดเร็กทอรี Linux คือรายการไฟล์ในไดเร็กทอรีนั้น ดังนั้นการสร้างไฟล์ภายในไดเรกทอรีจะอัปเดต mtime ของไดเรกทอรีนั้น แสดงรายการไฟล์ในไดเร็กทอรีโดยใช้ ls คำสั่ง เช่น อัปเดตเวลาการเข้าถึง และเช่นเดียวกับไฟล์ การเปลี่ยนการอนุญาตของไดเร็กทอรีหรือชื่อจะอัพเดต ctime

แล้วเวลาในการสร้างล่ะ

อาจทำให้คุณประหลาดใจที่ได้เรียนรู้ว่า Linux ไม่ได้ติดตามเวลาในการสร้าง คุณอาจสันนิษฐานได้ว่า เวลา หมายถึงเวลาสร้าง ในทำนองเดียวกัน คุณอาจคิดว่ามันเป็นสิ่งที่มีประโยชน์มากที่จะสามารถค้นหาได้

แอปพลิเคชั่นจำนวนมากบันทึกไฟล์ด้วยการสร้างตั้งแต่เริ่มต้นในแต่ละครั้ง นี่จะทำให้การใช้เวลาสร้างเข้าใจผิด

วิธีดูการประทับเวลาต่างๆ

วิธีที่ง่ายที่สุดในการรับข้อมูลการประทับเวลาคือการใช้ 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 ธง:

$ 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 สุดท้าย ใช้ -c ตั้งค่าสถานะเพื่อดู ctime:

$ 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 คือ สถิติ สั่งการ. คำสั่งนี้แสดงรายละเอียดระดับต่ำจากไอโหนดของไฟล์ ทำให้ง่ายต่อการตรวจสอบทั้งสามครั้งในคราวเดียว นอกจากนี้ยังช่วยแก้ปัญหา -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 tmp

โดยค่าเริ่มต้น มันจะตั้งค่า mtime และ atime เป็นเวลาปัจจุบัน คุณสามารถตั้งเวลาอื่นด้วยปุ่ม -t ธง:

touch -t 202103061200 tmp

คุณยังสามารถตั้งค่าเฉพาะ mtime หรือ atime ด้วย -m และ -a ธงตามลำดับ:

touch -t 202103061300 -m tmp

โปรดทราบว่า ctime จะอัปเดตเสมอเมื่อเราตั้งค่า atime หรือ mtime

วิธีค้นหาไฟล์ตามการประทับเวลา

ค้นหา คำสั่งเป็นอีกเครื่องมือหนึ่งที่ทำหน้าที่ในการประทับเวลา สามารถกรองไฟล์ตาม atime, ctime หรือ mtime ตัวอย่างเช่น:

find . -amin 15

จะค้นหาไฟล์ที่เข้าถึงเมื่อ 15 นาทีที่แล้ว ขณะที่:

find . -mtime -2

จะค้นหาไฟล์ที่แก้ไขภายในสองวันที่ผ่านมา

Linux ติดตามทุกไฟล์สามครั้ง

การประทับเวลาของไฟล์ที่อ้างอิงบ่อยที่สุดคือ mtime นี่คือวันที่และเวลาที่แสดงรายการไฟล์ เป็นต้น แต่การประทับเวลาอีก 2 ครั้งที่เหลือก็มีประโยชน์เช่นกัน หากคุณเข้าใจว่ามันหมายถึงอะไร โดยเฉพาะอย่างยิ่ง โปรดจำไว้เสมอว่าเวลา ctime หมายถึง การเปลี่ยนแปลง เวลา ไม่ใช่ การสร้าง เวลา.

คำสั่งต่างๆ เช่น touch และ stat เป็นสมาชิกที่มีประโยชน์ของกล่องเครื่องมือบรรทัดคำสั่ง Linux คำสั่งเหล่านี้จะปรับปรุงเวิร์กโฟลว์ Linux ของคุณโดยช่วยให้คุณสร้างไฟล์ใหม่ได้อย่างรวดเร็ว