Hệ điều hành Linux theo dõi ba dấu thời gian cho mỗi tệp trên hệ thống của bạn. Các dấu thời gian này cho phép bạn khám phá thời điểm tệp được cập nhật lần cuối. Nhưng tất cả chúng có nghĩa là gì? Và làm thế nào để bạn tìm ra những thời điểm này cho một tệp? Có sự khác biệt khi nói đến thư mục không?
Sự hiểu biết về atime, ctime và mtime có thể trả lời tất cả những câu hỏi này. Đây là ba dấu thời gian mà hệ thống tệp Unix theo dõi. Nếu bạn cần tìm hiểu chi tiết về những gì đã thay đổi và khi nào, hãy đọc tiếp.
Ba Dấu thời gian Unix là gì?
Mỗi tệp có ba dấu thời gian được liên kết với nó. Linux lưu trữ các dữ liệu này ở định dạng thời gian Unix, tính toán giây kể từ kỷ nguyên. Ba dấu thời gian thường được gọi là atime, ctime và mtime.
mtime là phổ biến nhất và thường hữu ích nhất. Nó là viết tắt của thời gian sửa đổi . Đây là thời điểm nội dung của tệp được ghi lần cuối vào đĩa.
Hơi khác là ctime viết tắt của thời gian thay đổi . Dấu thời gian này theo dõi các thay đổi về siêu dữ liệu, chẳng hạn như quyền sở hữu và quyền. Nó bao gồm việc đổi tên tệp — ít nhất, trên hệ điều hành Linux hiện đại điển hình. Nhưng nó cũng cập nhật khi nội dung của tệp thay đổi, vì vậy, nó luôn được cập nhật theo mtime.
Dấu thời gian thứ ba là atime , nơi lưu trữ lần cuối cùng bất kỳ ai truy cập tệp.
Cách Áp dụng Dấu thời gian cho Thư mục
Về cơ bản, thư mục Linux là một danh sách các tệp trong thư mục đó. Vì vậy, việc tạo tệp bên trong thư mục sẽ cập nhật mtime của thư mục đó. Liệt kê các tệp trong thư mục, sử dụng ls ví dụ:cập nhật thời gian truy cập của nó. Và, cũng như với tệp, việc thay đổi quyền của thư mục hoặc tên sẽ cập nhật thời gian của nó.
Còn về Thời gian Tạo?
Bạn có thể ngạc nhiên khi biết rằng Linux đơn giản là không theo dõi thời gian tạo. Ban đầu bạn có thể cho rằng ctime là viết tắt của thời gian sáng tạo. Tương tự, bạn có thể nghĩ về nó như một thứ rất hữu ích để có thể tìm hiểu.
Nhiều ứng dụng lưu tệp bằng cách tạo chúng từ đầu mỗi lần. Điều này sẽ làm cho việc sử dụng thời gian tạo bị sai lệch.
Cách xem các Dấu thời gian khác nhau
Cách đơn giản nhất để nhận thông tin dấu thời gian là sử dụng ls yêu cầu. Định dạng dài mặc định hiển thị chi tiết cho 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
Thay vào đó, bạn có thể hiển thị thời gian bằng cách sử dụng -u cờ:
$ 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
Dòng cuối cùng xác nhận rằng mtime của tệp này khác với thời gian. Cuối cùng, sử dụng -c cờ để xem 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
Lần này, chúng tôi xác nhận rằng cả ba lần đều khác biệt và chính xác:chúng tôi đã sửa đổi, sau đó truy cập, sau đó thay đổi tệp, theo thứ tự đó.
Một thay thế cho ls là stat yêu cầu. Lệnh này hiển thị chi tiết cấp thấp từ inode của tệp. Nó giúp bạn dễ dàng kiểm tra cả ba lần cùng một lúc. Nó cũng xoay quanh vấn đề -u không trực quan lá cờ. Dưới đây là ví dụ về kết quả đầu ra cho cùng một tệp:
$ 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
Cách cập nhật Dấu thời gian
Cảm ứng lệnh thay đổi thời gian sửa đổi và truy cập của một tệp. Đây cũng là một cách thuận tiện để tạo tệp trống, cách này sẽ thực hiện nếu tệp chưa tồn tại:
touch tmp
Theo mặc định, nó sẽ đặt mtime và atime thành thời gian hiện tại. Bạn có thể đặt thời gian khác với -t cờ:
touch -t 202103061200 tmp
Bạn cũng có thể chỉ đặt mtime hoặc atime với -m và -a cờ tương ứng:
touch -t 202103061300 -m tmp
Lưu ý rằng ctime luôn cập nhật khi chúng tôi đặt atime hoặc mtime.
Cách Tìm Tệp Dựa trên Dấu thời gian
Tìm thấy lệnh là một công cụ khác hoạt động trên dấu thời gian. Nó có thể lọc các tệp dựa trên atime, ctime hoặc mtime. Ví dụ:
find . -amin 15
sẽ tìm thấy các tệp được truy cập chính xác 15 phút trước, trong khi:
find . -mtime -2
sẽ tìm thấy các tệp được sửa đổi trong vòng hai ngày qua.
Linux theo dõi mỗi tệp ba lần
Dấu thời gian tệp được tham chiếu phổ biến nhất là mtime. Ví dụ:đây là ngày và giờ mà danh sách tệp hiển thị. Tuy nhiên, hai dấu thời gian khác cũng có thể hữu ích, miễn là bạn hiểu chúng đang đề cập đến điều gì. Đặc biệt, hãy luôn nhớ rằng ctime đại diện cho thay đổi thời gian, không phải sự sáng tạo thời gian.
Các lệnh như touch và stat là những thành viên hữu ích của hộp công cụ dòng lệnh Linux. Các lệnh này sẽ nâng cao quy trình làm việc Linux của bạn bằng cách cho phép bạn tạo các tệp mới một cách nhanh chóng.