Tại sao mèo không thay đổi thời gian truy cập?


25

Cuộc gọi thứ hai để cat một tập tin không cập nhật thời gian truy cập. Tôi đã mong đợi thời gian truy cập sẽ được cập nhật mỗi khi một nội dung tập tin được hiển thị.

Tôi thấy hành vi tương tự nếu tôi mở tệp trong trình duyệt web. Thời gian truy cập của nó không được cập nhật một cách nhất quán.

Tôi có hiểu nhầm thời gian truy cập không? Có gì khác nhau giữa hai cuộc gọi mèo?

$ kiểm tra cảm ứng
$ kiểm tra chỉ số
  Tệp: 'kiểm tra'
  Kích thước: 0 Khối: 0 Khối IO: 4096 tệp trống thông thường
Thiết bị: 803h / 2051d Inode: 152694 Liên kết: 1
Truy cập: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Truy cập: 2012-08-21 11: 05: 40.586020996 +0200
Sửa đổi: 2012-08-21 11: 05: 40.586020996 +0200
Thay đổi: 2012-08-21 11: 05: 40.586020996 +0200
 Sinh: -

$ vim kiểm tra
$ kiểm tra chỉ số
  Tệp: 'kiểm tra'
  Kích thước: 5 Khối: 8 Khối IO: 4096 tệp thông thường
Thiết bị: 803h / 2051d Inode: 152694 Liên kết: 1
Truy cập: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Truy cập: 2012-08-21 11: 05: 52.890021630 +0200
Sửa đổi: 2012-08-21 11: 06: 31.606023626 +0200
Thay đổi: 2012-08-21 11: 06: 31.638023629 +0200
 Sinh: -

$ kiểm tra mèo
kiểm tra

$ kiểm tra chỉ số
  Tệp: 'kiểm tra'
  Kích thước: 5 Khối: 8 Khối IO: 4096 tệp thông thường
Thiết bị: 803h / 2051d Inode: 152694 Liên kết: 1
Truy cập: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Truy cập: 2012-08-21 11: 06: 44.662024298 +0200
Sửa đổi: 2012-08-21 11: 06: 31.606023626 +0200
Thay đổi: 2012-08-21 11: 06: 31.638023629 +0200
 Sinh: -

$ kiểm tra mèo
kiểm tra

$ kiểm tra chỉ số
  Tệp: 'kiểm tra'
  Kích thước: 5 Khối: 8 Khối IO: 4096 tệp thông thường
Thiết bị: 803h / 2051d Inode: 152694 Liên kết: 1
Truy cập: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Truy cập: 2012-08-21 11: 06: 44.662024298 +0200
Sửa đổi: 2012-08-21 11: 06: 31.606023626 +0200
Thay đổi: 2012-08-21 11: 06: 31.638023629 +0200
 Sinh: -

Câu trả lời:


44

http://en.wikipedia.org/wiki/Stat_(system_call)

Phê bình về atime

Viết vào một tập tin thay đổi thời gian và thời gian của nó, trong khi đọc một tập tin thay đổi thời gian của nó. Kết quả là, trên một hệ thống tuân thủ POSIX, việc đọc một tệp gây ra một ghi, đã bị chỉ trích. Hành vi này thường có thể bị vô hiệu hóa bằng cách thêm tùy chọn gắn kết trong / etc / fstab.

Tuy nhiên, tắt cập nhật đồng thời phá vỡ sự tuân thủ POSIX và một số ứng dụng, đáng chú ý là trình đọc thư mutt (trong một số cấu hình) và một số tiện ích xem tệp sử dụng, đặc biệt là tmpwatch. Trong trường hợp xấu nhất, việc không cập nhật atime có thể khiến một số chương trình sao lưu không sao lưu được tệp.

Nhà phát triển nhân Linux, Ingo Molnár gọi atime "có lẽ là ý tưởng thiết kế Unix ngu ngốc nhất mọi thời đại", thêm vào: "[T] hink về điều này một chút: 'Đối với mọi tệp được đọc từ đĩa, hãy thực hiện ... viết vào đĩa! Và, đối với mọi tệp đã được lưu trong bộ nhớ cache và chúng tôi đọc từ bộ đệm ... hãy ghi vào đĩa! '"Ông nhấn mạnh thêm về tác động hiệu suất do đó:

Các bản cập nhật Atime cho đến nay là sự thiếu hụt hiệu năng IO lớn nhất mà Linux hiện nay. Loại bỏ các bản cập nhật atime sẽ mang lại cho chúng ta nhiều hiệu năng Linux hàng ngày hơn tất cả các bản tăng tốc pagecache trong 10 năm qua, cộng lại .

Làm thế nào để biết nếu noatime hoặc relatime là tùy chọn gắn kết mặc định trong kernel?

man mount
....
   relatime
          Update inode access times relative to  modify  or  change  time.
          Access time is only updated if the previous access time was ear
          lier than the current modify or change time. (Similar  to  noat
          ime,  but  doesn't break mutt or other applications that need to
          know if a file has been read since the last time  it  was  modi‐
          fied.)

          Since Linux 2.6.30, the kernel defaults to the behavior provided
          by this option (unless noatime was  specified), and the stricta‐
          time  option  is  required  to  obtain traditional semantics. In
          addition, since Linux 2.6.30, the file's  last  access  time  is
          always  updated  if  it  is more than 1 day old.
....

Đó là cách phân vùng cụ thể được gắn kết và tại sao con mèo không cập nhật thời gian truy cập như tôi mong đợi.


Thông tin thêm về cách ubfox
nelaaro

Dưới đây là một cuộc thảo luận cũ hơn về cách atime bị ảnh hưởng bởi các tùy chọn gắn kết khác nhau. linux.koolsolutions.com/2009/01/30/NH
nelaaro
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.