Alih-alih cat
Anda harus menggunakan touch
(atau sesuatu yang memaksa penulisan), atau secara eksplisit mendeklarasikan atime
dalam opsi pemasangan Anda.
Ubuntu menggunakan relatime
sebagai standar. Kernel Linux sebenarnya menggunakan relatime
sebagai default dari versi 2.6.30 dan seterusnya. Ini hanya memperbarui nilai-nilai tertentu ketika file diakses, bukan semua. Ini memodifikasi cat
perilaku sehingga tidak akan memperbarui waktu akses. Ini adalah default dalam opsi pemasangan Ubuntu. Satu-satunya cara untuk mengubah waktu akses adalah dengan menyentuh file (alias memaksa penulisan) alih-alih membaca sederhana.
Alasan di balik ini adalah kinerjanya. Jika setiap pembacaan membutuhkan penulisan seperti yang dibutuhkan POSIX, efisiensi disk dan perangkat berbasis flash akan menjadi lebih buruk. Ini juga tampaknya kontra produktif dalam sistem file read-only.
Ada banyak diskusi tentang topik ini di Ask Ubuntu dan Super User:
- https://askubuntu.com/q/2099/169736
- https://superuser.com/q/464290/235569
Ada 3 opsi pemasangan yang biasanya harus Anda perhatikan saat menangani atime
. Anda sudah familiar dengan 2 yang pertama, dari halaman manual mount
kutipan
atime Do not use noatime feature, then the inode access time is controlled
by kernel defaults. See also the description for strictatime and
relatime mount options.
noatime
Do not update inode access times on this filesystem (e.g., for
faster access on the news spool to speed up news servers).
Opsi lain yang mungkin tidak Anda kenal, dan yang menyebabkan kesedihan Anda adalah yang ini, yang telah menjadi default sejak kernel 2.6.30:
relatime
Update inode access times relative to modify or change time.
Access time is only updated if the previous access time was
earlier than the current modify or change time. (Similar to
noatime, but doesn't break mutt or other applications that need to
know if a file has been read since the last time it was
modified.)
Since Linux 2.6.30, the kernel defaults to the behavior provided
by this option (unless noatime was specified), and the
strictatime 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.
Anda dapat memeriksa apakah opsi ini disetel pada sistem file dengan melihat di bawah /proc/mounts
.
Contoh
$ head -5 /proc/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=3976812k,nr_inodes=994203,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
Bedanya dengan relatime
vs.noatime
apakah itu akan membuat perubahan, tetapi hanya ketika waktu akses saat ini setelah waktu akses sebelumnya.
Waktu akses hanya diperbarui jika waktu akses sebelumnya lebih awal dari waktu modifikasi atau perubahan saat ini. (Mirip dengan noatime, tetapi tidak merusak mutt atau aplikasi lain yang perlu mengetahui apakah file telah dibaca sejak terakhir kali diubah.)