GNU/Linux >> Belajar Linux >  >> Linux

Waktu akses file tidak diperbarui di ubuntu 12.04

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.)


Linux
  1. Cara mengoptimalkan cache file statis Apache di Ubuntu 18.04

  2. Memahami stempel waktu file Mac

  3. akses bersamaan ke file linux

  1. Dapatkan Usia File yang Diberikan?

  2. Tonton Filesystem secara Real Time di OS X dan Ubuntu

  3. shebang atau bukan shebang

  1. Pemantauan Akses File Linux?

  2. Kapan File Dibuat?

  3. Ubuntu – Linux – Waktu Perubahan File Versus Waktu Modifikasi?