GNU/Linux >> Linux の 問題 >  >> Linux

ubuntu 12.04でファイルアクセス時間が更新されない

cat の代わりに touch を使用する必要があります (または書き込みを強制するもの)、または明示的に atime を宣言する マウントオプションで。

Ubuntu は relatime を使用します デフォルトとして。実際、Linux カーネルは relatime を使用しています。 バージョン 2.6.30 以降のデフォルトとして。これは、すべてではなくファイルがアクセスされたときに特定の値のみを更新します。これは cat を変更します アクセス時間が更新されないようにします。これは、Ubuntu マウント オプションのデフォルトです。アクセス時間を変更する唯一の方法は、単純な読み取りではなく、ファイルにアクセスすることです (つまり、強制的に書き込みます)。

この背後にある理由はパフォーマンスです。 POSIX が要求するように、読み取りごとに書き込みが必要な場合、ディスクとフラッシュ ベースのデバイスの効率は低下します。これはまた、読み取り専用ファイルシステムでは逆効果のようです。

このトピックについては、Ask Ubuntu and Super User で多くの議論があります:

  • https://askubuntu.com/q/2099/169736
  • https://superuser.com/q/464290/235569

atime を扱う際に一般的に注意する必要がある 3 つのマウント オプションがあります。 .最初の 2 つについては、mount の man ページからおなじみです

抜粋

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

もう 1 つのオプションは、おそらくなじみがなく、あなたの悲しみを引き起こしているものです。これは、カーネル 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.

/proc/mounts の下を見ると、これらのオプションがファイルシステムに設定されているかどうかを確認できます。 .

$ 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

relatimeとの違い vs.noatime ただし、現在のアクセス時刻が前回のアクセス時刻より後の場合のみです。

<ブロック引用>

アクセス時刻は、前回のアクセス時刻が現在の変更時刻または変更時刻より前であった場合にのみ更新されます。 (noatime に似ていますが、ファイルが最後に変更されてから読み取られたかどうかを知る必要がある mutt やその他のアプリケーションを中断しません。)


Linux
  1. Linux でファイル アクセスを監査する方法

  2. ファイル:コマンドが見つかりません

  3. Ubuntu での Prolog プログラミング

  1. Linuxファイルアクセスモニタリング?

  2. 与えられたファイルの年齢を取得しますか?

  3. ファイルの作成/作成時間を取得しますか?

  1. ファイルはいつ作成されましたか?

  2. Ubuntu – Linux –ファイル変更時間と変更時間?

  3. 13.10からUbuntu14.04にアップデートした後、サスペンドが機能しませんか?