ls
のマンページには次のように書かれています。
-u with -lt: sort by, and show, access time; with -l: show access time and sort by name;
otherwise: sort by access time
しかし、それはうまくいかないようです:
test@debian:~$ date > file
test@debian:~$ date
Sun Jan 17 13:21:12 CET 2016
test@debian:~$ cat file
Sun Jan 17 13:20:10 CET 2016
test@debian:~$ ls -lu file
-rw-r--r-- 1 test test 29 Jan 17 13:21 file
test@debian:~$ date
Sun Jan 17 13:22:02 CET 2016
test@debian:~$ cat file
Sun Jan 17 13:20:10 CET 2016
test@debian:~$ ls -lu file
-rw-r--r-- 1 test test 29 Jan 17 13:21 file
代わりに(最終アクセス時間は13:22以降であったため)次のようなものを期待する必要があります。
-rw-r--r-- 1 test test 29 Jan 17 13:22 file
説明は何ですか?ファイルはバッファリングされていますか?
ファイルシステムはデフォルトでrelatime
でマウントされます。アクセス時間は、ファイルの変更された時間以上である場合、更新されません。
これは(POSIX違反の)最適化であり、すべてのファイルの読み取りによってディスクへの書き込みが発生するのを防ぎます。
見かけの時間更新は、バッファリングの影響を受けません。 (lazyatime
は最大24時間atimeをバッファリングしますが、メモリ内のatimeは毎回更新され、それがls
に表示されます。).