それらの(ファイルと)ディレクトリのchmod
を変更せずに、ディレクトリ構造をatime
できるようにしたいと思います。
私が次のようなファイル構造から始めた場合
$ tree test/
test/
├── test1.txt
└── text2.txt
ファイルとディレクトリのatime
sを一覧表示します
$ find test/ -exec stat --printf='name: %n atime: %x\n' {} \;
name: test/ atime: 2019-02-28 11:28:24.418369586 +0100
name: test/text2.txt atime: 2019-02-28 11:28:03.609919183 +0100
name: test/test1.txt atime: 2019-02-28 11:27:58.101799544 +0100
そしてchmod
$ chmod -R 'u=Xrw,g=Xrw,o=Xr' test
これにより、ディレクトリのatime
sが変更されます(もちろん、正当な理由があります)。 mtime
sは影響を受けません:
$ find test/ -exec stat --printf='name: %n atime: %x\n' {} \;
name: test/ atime: 2019-02-28 11:38:30.590740343 +0100
name: test/text2.txt atime: 2019-02-28 11:28:03.609919183 +0100
name: test/test1.txt atime: 2019-02-28 11:27:58.101799544 +0100
それを回避する簡単な方法はありますか?もちろん、変更前にatime
を保存し、後でリセットするスクリプトを作成することもできます。しかし、もっと簡単な方法はありますか?
あなたの例では、ディレクトリのみが変更されました。 /etc/fstab
のマウントオプションにnodiratime
(ディレクトリのみ)またはnoatime
(ファイルとディレクトリ、nodiratime
を含む)を追加することで、atimeを無効にできます。その場合、ctimeのみが変更されます。
カーネルのデフォルトは、オーバーライドされない限りrelatime
であり、mount
コマンドを実行すると表示されます。
マウント(8)
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 it 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.
ところで。あなたのchmodはここでは機能しません。 chmod -R u=rwx,g=rwx,o=rwx test
のことですか?