Hệ điều hành Linux theo dõi ba dấu thời gian (timestamp) cho mỗi file (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 biết 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 được những thời điểm này cho một tệp? Có sự khác biệt gì khi nói đến thư mục (directory) không?
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. Hãy đọc tiếp để cùng tìm hiểu về chúng nhé.
1. 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 bằng số giây kể từ 01/01/1970 (UTC) 00:00:00. Ba dấu thời gian thường được gọi là atime, ctime và mtime.
Mtime là dấu thời gian phổ biến nhất và thường hữu ích nhất. Viết tắt của modified time (thời gian sửa đổi), đây là thời điểm mà nội dung của tệp được ghi lần cuối vào đĩa.
ctime là viết tắt của change time (thời gian thay đổi), theo dõi các thay đổi về siêu dữ liệu, chẳng hạn như quyền sở hữu và các quyền khác liên quan đến file. Nó cũng 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 như mtime.
Dấu thời gian thứ ba là atime, viết tắt cho access time (thời gian truy cập), lưu trữ lần cuối ai đó truy cập vào file.
>>> Đọc ngay: 6 yếu tố cần xem xét khi lựa chọn một bản phân phối Linux
2. 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, tạo một tệp bên trong một thư mục sẽ cập nhật mtime của thư mục đó. Việc liệt kê các tệp trong thư mục, sử dụng lệnh ls chẳng hạn, cập nhật atime của nó. Và, cũng như với một tệp, việc thay đổi quyền hoặc tên của thư mục sẽ cập nhật ctime của nó.
3. Thời điểm tạo file
Bạn có thể ngạc nhiên khi biết rằng Linux không theo dõi thời gian tạo file.
Nhiều ứng dụng lưu tệp bằng cách tạo lại chúng từ đầu mỗi lần lưu. Điều này sẽ làm cho việc sử dụng thời gian tạo bị sai lệch.
>>> Đọc ngay: Cách cài đặt Microsoft Office trên Linux
4. Cách xem các dấu thời gian khác nhau
Cách đơn giản nhất để lấy thông tin dấu thời gian là sử dụng lệnh ls. Đị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
Bạn có thể hiển thị atime bằng cách sử dụng flag -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
Dòng cuối cùng xác nhận rằng mtime của tệp này khác với atime. Cuối cùng, sử dụng flag -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
Ngoài lệnh ls, bạn cũng có thể dùng lệnh stat. Lệnh này hiển thị chi tiết cấp thấp từ inode của tệp. Đây là một ví dụ đầ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
5. Cách cập nhật dấu thời gian
Lệnh touch 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 một tệp trống, nó sẽ thực hiện điều này 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 flag -t :
touch -t 202103061200 tmp
Bạn cũng có thể chỉ đặt mtime hoặc atime với các flag -m và -a tương ứng:
touch -t 202103061300 -m tmp
Lưu ý rằng ctime luôn cập nhật khi chúng ta đặt atime hoặc mtime.
>>> Đọc ngay: Cách bắt đầu sử dụng Linux
6. Cách tìm tệp dựa trên dấu thời gian
Lệnh find là một công cụ khác hoạt động dựa 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.
Kết luậ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ị. Nhưng 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ì.
>>> Tìm hiểu ngay các khóa học lập trình của FUNiX tại:
>>> Xem thêm nhiều hơn bài viết tại đây:
Cách tạo ảnh Mosaic trên Linux với Polyfoto
Cách ghi chú trong Terminal Linux với ứng dụng ghi chú tnote
Cách sử dụng lệnh wc trong Linux
Hướng dẫn cách sử dụng lsof để theo dõi file đang mở trên Linux
Dịch từ: https://www.makeuseof.com/linux-file-timestamps/
Vân Nguyễn
Bình luận (0
)