Solaris 8では、ファイルにアクセスするとアクセス時間が変わりますが、変更時間は変わりません。ただし、Solaris 10では、ファイルにアクセスしたときにアクセス時間と変更時間の両方が変更されました。私たちは確認してat
使用mt
しましたtruss -v lstat -t lstat ls -l <file>
。
これがSolaris 10の動作ですか?
答え1
UFSまたはZFS(または他の標準ファイルシステム)では機能しません。ファイルに「アクセス」するために何を使用していますか?どのファイルシステムを使用していますか?
$ touch test
$ stat test | grep "^[AM]"
Access: (0644/-rw-r--r--) Uid: ( 101/ matt) Gid: ( 10/ staff)
Access: 2013-02-20 13:04:25.597883067 +0000
Modify: 2013-02-20 13:04:25.597883067 +0000
$ cat test
$ stat test | grep "^[AM]"
Access: (0644/-rw-r--r--) Uid: ( 101/ matt) Gid: ( 10/ staff)
Access: 2013-02-20 13:04:38.117719129 +0000
Modify: 2013-02-20 13:04:25.597883067 +0000
$ echo test > test
$ stat test | grep "^[AM]"
Access: (0644/-rw-r--r--) Uid: ( 101/ matt) Gid: ( 10/ staff)
Access: 2013-02-20 13:04:38.117719129 +0000
Modify: 2013-02-20 13:04:54.739753877 +0000
$ cat test
test
$ stat test | egrep "^[AM]"
Access: (0644/-rw-r--r--) Uid: ( 101/ matt) Gid: ( 10/ staff)
Access: 2013-02-20 13:04:59.629405264 +0000
Modify: 2013-02-20 13:04:54.739753877 +0000
答え2
あなたが見ているものは正しく実行されませんでした(人の間違い)。例:viを使用してファイルを作成しました。ユー=メートルトン:
truss -v lstat -t lstat ls -l count_files.awk
lstat64("count_files.awk", 0xFFBFF5B8) = 0
d=0x04010003 i=58647 m=0100755 l=1 u=0 g=0 sz=674
at = Feb 20 14:05:56 CET 2013 [ 1361365556.951290423 ]
mt = Feb 20 14:05:58 CET 2013 [ 1361365558.532478282 ]
ct = Feb 20 14:05:58 CET 2013 [ 1361365558.532478282 ]
bsz=1024 blks=3 fs=zfs
-rwxr-xr-x 1 root root 674 Feb 20 14:05 count_files.awk
これでviを使ってファイルを再び開きますが、終了します。:キュー!
参考にしてくださいat は mt と同じではありません。。
truss -v lstat -t lstat ls -l count_files.awk
lstat64("count_files.awk", 0xFFBFF648) = 0
d=0x04010003 i=58647 m=0100755 l=1 u=0 g=0 sz=674
at = Feb 20 14:07:58 CET 2013 [ 1361365678.550493967 ]
mt = Feb 20 14:05:58 CET 2013 [ 1361365558.532478282 ]
ct = Feb 20 14:05:58 CET 2013 [ 1361365558.532478282 ]
bsz=1024 blks=3 fs=zfs
-rwxr-xr-x 1 root root 674 Feb 20 14:05 count_files.awk
それでは別のテストをしてみましょう。 :q!代わりにviを使用してファイルを開き、終了します。 (何も変更していないが、viそれでも保存されます。ファイル内容)
truss -v lstat -t lstat ls -l count_files.awk
lstat64("count_files.awk", 0xFFBFF5F8) = 0
d=0x04010003 i=58647 m=0100755 l=1 u=0 g=0 sz=674
at = Feb 20 14:09:26 CET 2013 [ 1361365766.879205630 ]
mt = Feb 20 14:09:28 CET 2013 [ 1361365768.147368630 ]
ct = Feb 20 14:09:28 CET 2013 [ 1361365768.147368630 ]
bsz=1024 blks=3 fs=zfs
-rwxr-xr-x 1 root root 674 Feb 20 14:09 count_files.awk
私が知っている限り、読み取りが呼び出されると時間が変わり、書き込みが完了すると(書き込み呼び出し)時間が変更されます。