เวลาของไฟล์บน Unix มีประโยชน์อย่างมากสำหรับผู้ใช้ ไม่ว่าจะใช้ดูเพื่อหาว่า ไฟล์นี้ถูกเปลี่ยนแปลงไปเมื่อไร เก่าไป หรือใหม่กว่าอย่างไร
อีกประการ ยังถูกใช้โดยโปรแกรม Backup เพื่อเลือกไฟล์สำหรับการทำ Backup แบบ Incremental คือ เลือกเฉพาะไฟล์ที่เพิ่มขึ้นใหม่ หรือไฟล์ที่ถูกเปลี่ยนแปลงเท่านั้น
เวลาของไฟล์บน Unix มีอยู่ 3 ค่า คือ atime, ctime, mtime ในที่นี้จะอธิบายการเปลี่ยนแปลงของค่าเวลาต่างๆ ดังนี้
ใช้คำสั่ง date เพื่อดูเวลาที่ทดสอบ
[user1@devel time]$ date Sat Jun 4 13:54:20 ICT 2011
สร้างไฟล์เปล่าๆ ด้วยคำสั่ง touch
[user1@devel time]$ touch test1.txt
ใช้คำสั่ง ls -l เพื่อดูข้อมูลไฟล์เบื้องต้น
[user1@devel time]$ ls -l test1.txt
-rw-rw-r-- 1 user1 user1 0 Jun 4 13:54 test1.txt
ใช้คำสั่ง stat เพื่อดูข้อมูลไฟล์โดยละเอียด
[user1@devel time]$ stat test1.txt
File: `test1.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 2749831 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 500/ user1) Gid: ( 500/ user1)
Access: 2011-06-04 13:54:23.000000000 +0700
Modify: 2011-06-04 13:54:23.000000000 +0700
Change: 2011-06-04 13:54:23.000000000 +0700
หมายเหตุ เวลาที่แสดงจากคำสั่ง ls -l เป็นเวลา Modify (mtime)
เวลา Access (atime)
เมื่อไฟล์ถูก access หรือดูเนื้อหาภายในไฟล์ เวลา Access (atime) จะถูกปรับปรุงโดยอัตโนมัติ
เช่น ใช้คำสั่ง cat เพื่อเรียกดูไฟล์ เวลา Access (atime) ก็จะถูกเปลี่ยนไป ตามเวลาที่ access
[user1@devel time]$ date Sat Jun 4 13:57:35 ICT 2011
[user1@devel time]$ cat test1.txt
[user1@devel time]$ ls -l test1.txt -rw-rw-r-- 1 user1 user1 0 Jun 4 13:54 test1.txt
[user1@devel time]$ stat test1.txt
File: `test1.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 2749831 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 500/ user1) Gid: ( 500/ user1)
Access: 2011-06-04 13:57:37.000000000 +0700
Modify: 2011-06-04 13:54:23.000000000 +0700
Change: 2011-06-04 13:54:23.000000000 +0700
สังเกตว่า เวลาของไฟล์ จากการรันคำสั่ง ls -l ไม่เปลี่ยนแปลง เพราะ mtime ไม่เปลี่ยน
เวลา Change (ctime)
เมื่อมีการเปลี่ยนแปลงข้อมูลเกี่ยวกับ Inode ของไฟล์ เช่นการเปลี่ยน Owner, Group, Permission เวลา ctime จะถูกปรับปรุง
ตัวอย่างการเปลี่ยน permission ทำให้เวลา ctime เปลี่ยนแปลง
[user1@devel time]$ date Sat Jun 4 14:05:06 ICT 2011
[user1@devel time]$ chmod 600 test1.txt
[user1@devel time]$ ls -l test1.txt -rw-rw-r-- 1 user1 user1 0 Jun 4 13:54 test1.txt
[user1@devel time]$ stat test1.txt
File: `test1.txt'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 802h/2050d Inode: 2749831 Links: 1
Access: (0600/-rw-------) Uid: ( 500/ user1) Gid: ( 500/ user1)
Access: 2011-06-04 13:57:37.000000000 +0700
Modify: 2011-06-04 13:54:23.000000000 +0700
Change: 2011-06-04 14:05:09.000000000 +0700
สังเกตว่า เวลา Access (atime), Modify (mtime) หรือเวลาจากคำสั่ง ls -l ไม่เปลี่ยนแปลงไป เพราะคำสั่ง chmod เปลี่ยนแค่ข้อมูลใน Inode
เวลา Modify (mtime)
เมื่อเนื้อหาในไฟล์ถูกแก้ไข เวลา Modify (mtime) จะถูกปรับปรุง ตัวอย่างเช่น
[user1@devel time]$ date Sat Jun 4 14:09:29 ICT 2011
ใช้คำสั่ง echo และ shell redirection ">" เพิ่มเนื้อหาเข้าไปในไฟล์
[user1@devel time]$ echo "add more content to file" >> test1.txt
[user1@devel time]$ ls -l test1.txt -rw------- 1 user1 user1 25 Jun 4 14:09 test1.txt
[user1@devel time]$ stat test1.txt
File: `test1.txt'
Size: 25 Blocks: 8 IO Block: 4096 regular file
Device: 802h/2050d Inode: 2749831 Links: 1
Access: (0600/-rw-------) Uid: ( 500/ user1) Gid: ( 500/ user1)
Access: 2011-06-04 13:57:37.000000000 +0700
Modify: 2011-06-04 14:09:38.000000000 +0700
Change: 2011-06-04 14:09:38.000000000 +0700
เมื่อเนื้อหาในไฟล์ถูกเปลี่ยน เวลา Change (ctime) ก็จะถูกปรับไปด้วย