[Linux] Tìm hiểu ý nghĩa các giá trị “atime”, “mtime” và “ctime” trên Linux

Cùng tìm hiểu ý nghĩa của các giá trị thời gian (timestamp) gồm "atime", "mtime" và "ctime" trên hệ thống Lĩnu.

Hôm nay chúng ta sẽ tìm hiểu một nội dung về hệ thống Linux, khá đơn giản nhưng chưa hẳn nhiều bạn mới bắt đầu học về Linux đã biết. Đó chính là tìm hiểu ý nghĩa các giá trị “atime“, “mtime” và “ctime” của file/dir trên Linux.

atime (access time) : đây là giá trị đại diện cho thời gian mà dữ liệu của 1 file được truy cập lần cuối. Ví dụ như đọc hiển thị nội dung của 1 file, hay thực thi shell script cũng sẽ thay đổi thông tin về giá trị “atime” của file đó hoặc bạn edit 1 file bằng “vi/nano” cũng được tính luôn.

mtime (modified time) : đây là giá trị đại diện cho thời gian mà nội dung thật sự của file được chỉnh sửa ở lần cuối cùng. Tức bất cứ khi nào mà bạn thay đổi nội dung file, thêm 1 vài dòng, xoá 1 vài chữ,.. thì thông tin thời gian sẽ được thay đổi.

ctime (change time) : đây là giá trị đại diện cho thông tin về thời gian khi một thông tin meta inode file/dir được thay đổi (gồm owner, permission,…). Giá trị “ctime” cũng được cập nhật khi mà nội dung của file thay đổi.

Kế tiếp thì bạn sẽ đến với 2 nội dung giúp bạn hiểu rõ hơn gồm :
A – Coi thông tin “atime”, “ctime” và “mtime” bằng lệnh “ls” và “stat”
B – Thực hành để hiểu khi nào các giá trị này thay đổi

Rồi giờ ta bắt đầu tiếp 2 phần quan trọng nào.

A) Coi thông tin “atime”, “ctime” và “mtime” bằng lệnh “ls” và “stat”
1. Xem thông tin “mtime” với lệnh “ls”

– Bạn sử dụng option “-l” với lệnh “ls“, sẽ được liệt kê danh sách file với long-format output tức có thể hiểu nôm na là dạng thể hiện nhiều thông tin liên quan file/dir bằng lệnh “ls“.

Ví dụ:

# ls -l /tmp/cuongqc.txt
-rw-r--r--  1 cuongqc  cuongquach  5 Jun 12 13:37 cuongqc.txt

-> Đây là output mặc định của lệnh “ls -l“, trong đó giá trị thời gian được thể hiện là “mtime” tức thời gian file được chỉnh sửa thay đổi nội dung bên trong lần cuối cùng. Ở đây thời gian lúc đó là 13h17 sáng.


2. Xem thông tin “atime” với lệnh “ls”

– Bây giờ nếu ta muốn xem thông tin thời gian truy cập lần cuối cùng đối với file, thì bạn cần sử dụng option “-lu“.

Ví dụ:

# ls -lu /tmp/cuongqc.txt
-rw-r--r--  1 cuongqc  cuongquach  5 Jun 12 13:35 cuongqc.txt

-> Có thể thấy thời gian truy cập lần cuối là 13:35 chiều.

 
3. Xem thông tin “ctime” với lệnh “ls”

– Còn giờ thì với option “-lc” thì chương trình lệnh “ls” sẽ thể hiện output cho bạn về thời gian cuối cùng file được thay đổi về nội dung hoặc các meta inode như owner, permission,…

Ví dụ:

# ls -lc /tmp/cuongqc.txt
-rwx------  1 cuongbenky  staff  5 Jun 12 13:40 cuongqc.txt

 

4. Coi thông tin bằng lệnh “stat”

– Bạn hoàn toàn có thể show thông tin cụ thể về “atime“, “ctime” và “mtime” bằng chương trình lệnh “stat”, nó còn có thể hiện ra các thông tin chi tiết khác liên quan đến file/dir mà bạn muốn xem.

Ví dụ:

# stat /tmp/cuongqc.txt
File: `/tmp/cuongqc.txt'
Size: 9             Blocks: 8          IO Block: 4096   regular file
Device: 811h/2065d    Inode: 178130      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-05-25 07:27:51.000000000 +0100
Modify: 2016-04-20 07:10:14.000000000 +0100
Change: 2016-04-20 07:35:22.000000000 +0100

 

B) Thực hành để hiểu khi nào các giá trị này thay đổi

Ok, mình sẽ đưa ra các dẫn chứng demo bằng câu lệnh đơn giản để các bạn có thể nắm bắt được khi nào các giá trị “atime“, “ctime” và “mtime” này được thay đổi nhé.

Mình sẽ tạo ra 1 file mới.

# touch cuongqc.txt

Rồi giờ mình sẽ liệt kê thông tin về “atime“, “ctime” và “mtime” lúc ban đầu. Nhớ theo thứ tự dòng 1 là “atime“, dòng 2 là “mtime” và dòng 3 là “ctime“.

# ls -lu cuongqc.txt && ls -l cuongqc.txt && ls -lc cuongqc.txt 
-rw-r--r--  1 cuongqc  cuongquach  0 Jun 12 13:29 cuongqc.txt
-rw-r--r--  1 cuongqc  cuongquach  0 Jun 12 13:29 cuongqc.txt
-rw-r--r--  1 cuongqc  cuongquach  0 Jun 12 13:29 cuongqc.txt

Giờ ta sẽ đọc nội dung của nó, mặc dù nó rỗng, bạn có thể tự tưởng tượng nó có đi nếu thích vì nó y sì nhau.

# cat cuongqc.txt
# ls -lu cuongqc.txt && ls -l cuongqc.txt && ls -lc cuongqc.txt
-rw-r--r--  1 cuongqc  cuongquach  0 Jun 12 13:35 cuongqc.txt
-rw-r--r--  1 cuongqc  cuongquach  0 Jun 12 13:29 cuongqc.txt
-rw-r--r--  1 cuongqc  cuongquach  0 Jun 12 13:29 cuongqc.txt

-> Vậy là bạn đã thấy giá trị “atime” được thay đổi rồi nhé.

Tiếp đến mình sẽ thay đổi nội dung file với lệnh “echo” đẩy output vào file hoặc các bạn “vi/nano” chỉnh sửa nội dung file cũng được.

# echo "demo nhe" > cuongqc.txt
# ls -lu cuongqc.txt && ls -l cuongqc.txt && ls -lc cuongqc.txt
-rw-r--r--  1 cuongqc  cuongquach  5 Jun 12 13:35 cuongqc.txt
-rw-r--r--  1 cuongqc  cuongquach  5 Jun 12 13:37 cuongqc.txt
-rw-r--r--  1 cuongqc  cuongquach  5 Jun 12 13:37 cuongqc.txt

-> Các bạn thấy cả giá trị “mtime” và “ctime” của file đều bị thay đổi rồi này.

Cuối cùng thì mình sẽ thay đổi quyền thực thi hoặc quyền sở hữu owner đối với file này, cũng có ý nghĩa như nhau thay đổi thông tin metadata inode của file.

# chmod 700 cuongqc.txt
# ls -lu cuongqc.txt && ls -l cuongqc.txt && ls -lc cuongqc.txt
-rwx------  1 cuongbenky  staff  5 Jun 12 13:35 cuongqc.txt
-rwx------  1 cuongbenky  staff  5 Jun 12 13:36 cuongqc.txt
-rwx------  1 cuongbenky  staff  5 Jun 12 13:40 cuongqc.txt

-> Rồi xong, thế là giá trị “ctime” đã bị thay đổi rồi.

Thêm 2 trường hợp thú vị nữa để hiểu. Giờ bạn edit bằng “vi” thêm nội dung và save lại thử.

# vi cuongqc.txt
demo2
:x
# ls -lu cuongqc.txt && ls -l cuongqc.txt && ls -lc cuongqc.txt
-rwx------  1 cuongbenky  staff  5 Jun 12 13:45 cuongqc.txt
-rwx------  1 cuongbenky  staff  5 Jun 12 13:45 cuongqc.txt
-rwx------  1 cuongbenky  staff  5 Jun 12 13:45 cuongqc.txt

-> Lúc này bạn sẽ thấy cả 3 giá trị đều được cập nhật. Do bạn vào xem nội dung để edit này, rồi bạn lưu nội dung mới thế là cả 3 giá trị đều cập nhật. Còn nếu bạn không lưu lại, mà vào “vi” file xem nội dung thì vẫn chỉ có giá trị thời gian “atime” bị thay đổi.

 
Từ ví dụ trên, các bạn có thể tự demo để hiểu thêm về 3 giá trị này nhé. Cám ơn các bạn đã theo dõi bài viết này. Bye bye.

Previous article[OpenVPN] Cấu hình cho phép nhiều người dùng xài chung 1 certificate kết nối OpenVPN
Next article[DirectAdmin] Hướng dẫn khôi phục lại quyền ownership và permission đối với file system hệ thống DA
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !