Tại sao sắp xếp các tệp theo thời gian truy cập không hoạt động?


12

Tôi đã cố gắng sử dụng lệnh ls --time=atime

nó đã làm việc trong một thư mục nhưng không hoạt động trong một thư mục khác. Tôi đã mở một số tệp trong vim, evince và các ứng dụng khác nhưng sau thời gian truy cập tệp lệnh không thay đổi.

Khi tôi nhập touch file.txtthời gian truy cập được thay đổi, nhưng khi tôi nhập vim file.txtthời gian truy cập không thay đổi.

Có chuyện gì ở đây vậy?


Bạn đang chạy hệ điều hành nào? Nhiều bản phân phối Linux hiện đại tắt atime; Theo mặc định, nó tắt trong các nhân Linux gần đây.
Gilles 'SO- ngừng trở nên xấu xa'

Tôi đang chạy Ubuntu 10.04.
xralf

Bạn làm gì sau khi chạy vim file.txt? Bạn có bỏ vim bằng :qhay :wqkhông? Nếu bạn không viết, vimkhông sửa đổi thời gian truy cập của tệp - đây là do thiết kế.
rozcietrzewiacz

Bây giờ tôi có ít tệp hơn trong thư mục và thời gian truy cập được thay đổi bằng vim và tôi không cần chỉnh sửa tệp, nhưng khi tôi mở tệp có .jpgphần mở rộng thì nó không thay đổi. Khi tôi mở nó trong trình xem ảnh, nó cũng không thay đổi. Tôi cần thời gian truy cập được thay đổi mỗi khi tập tin được đọc bởi một số ứng dụng.
xralf

Câu trả lời:


14

Với các tùy chọn gắn kết mặc định, thời gian truy cập được xử lý theo cách đặc biệt trên linux:

relatime- Gắn kết hệ thống tập tin với tùy chọn này khiến thời gian truy cập được cập nhật nếu chúng (trước khi cập nhật xảy ra) sớm hơn thời gian sửa đổi. Điều này cắt giảm đáng kể các bài viết gây ra bởi cập nhật atime.

Các relatimetùy chọn gắn kết đã được thực hiện tùy chọn mặc định từ Linux kernel 2.6.30. Đó là lý do cho việc ls --time=atimekhông liệt kê những gì bạn mong đợi.

Giải pháp: Để sử dụng hành vi nghiêm ngặt (di sản) cho atime, hãy sử dụngstrictatimetùy chọn gắn kết (ví dụ: trong/etc/fstab).

Lưu ý: Để tắt hoàn toàn cập nhật atime, người ta có thể sử dụng noatime.


Điều này đã giúp. Cảm ơn bạn. Hệ thống sẽ chậm hơn bao nhiêu strictatime?
xralf

quá trình tăng tốc rất tốn kém (một lần truy cập đĩa được lên lịch để cập nhật các nút mỗi khi nội dung tệp của chúng được truy cập). Đặc biệt, nếu có nhiều tệp nhỏ được tham gia, các bản cập nhật cùng lúc có thể tăng gấp đôi tải đĩa. Hầu hết thời gian, các chương trình dựa vào thời gian truy cập chỉ muốn kiểm tra xem atime> mtime hay không. Vì vậy, tùy chọn mặc định mới relatimebảo tồn tính tương thích cho các chương trình đó. Trên thực tế, rất ít chương trình vẫn dựa vào điều này và nó thường an toàn khi sử dụng noatime.
Stéphane Gimenez

Tôi thích strictatimetính năng này khi tôi dùng thử ngày hôm nay, nhưng nếu nó làm cho hệ thống chậm, tôi chỉ muốn đặt strictatimetrong một số thư mục nhất định, nếu có thể.
xralf

1
Thực tế, nó chậm nhất là 1% hoặc 2%, có thể lên tới 5% trên một máy chủ có tải đĩa cao. Chà, nếu bạn thực sự quan tâm đến hiệu suất, có thể hạn chế cập nhật atime vào một thư mục cụ thể bằng cách sử dụng một fs chuyên dụng được gắn với strictatimeđó sẽ sử dụng thư mục này làm điểm gắn kết.
Stéphane Gimenez

2

Bạn có thể tắt ghi thời gian truy cập cho một số hệ thống tệp (tìm noatimetrong /etc/fstab). Để kiểm tra điều này, bạn có thể thử touch -a file; ls -l --time=atime file, sau đó lặp lại touch -a file; ls -l --time=atime fileđể xem nó có thay đổi không.

Các lshành vi được giải thích bởi man ls: ls -l --time=atimechương trình truy cập vào thời gian trong ngày / giờ cột. Để sắp xếp theo khóa này, bạn cũng cần phải sử dụng --sort=time.

Nếu bạn theo "thời gian không thay đổi" có nghĩa là nó hiển thị cùng một kết quả, đó là do atime bị vô hiệu hóa cho hệ thống tệp (xem /etc/fstab) hoặc vì thời gian truy cập thực sự giống với thời gian sửa đổi (khá phổ biến).

Lưu ý rằng các tệp liệt kê không thay đổi thời gian truy cập của chúng - Các tệp không được truy cập bởi ls, chỉ có bộ đệm inode .


Khi tôi nhập ls -l --time=atimethời gian không thay đổi (tôi giả sử rằng cột có thời gian là không đúng lúc) và thứ tự sắp xếp không bị thay đổi, các tệp có thời gian cuối cùng sẽ ở đầu hoặc cuối danh sách (nếu chúng được truy cập lần cuối ).
xralf

@xralf Bạn có lặp lại cả hai touchls? Tôi chỉnh sửa câu trả lời để làm cho nó rõ ràng hơn.
rozcietrzewiacz

Khi tôi gõ touch file.txt, thời gian truy cập được thay đổi, nhưng khi tôi gõ vim file.txt thì thời gian truy cập không thay đổi.
xralf

1

Nó cũng có thể hữu ích khi thử nghiệm như thế này để thêm --full-timecờ vào lsđể bạn có thể thấy giây và giây phụ để bạn có thể thấy hiệu ứng mà không bị giới hạn bởi các ranh giới phút.

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.