Solaris 10 修改时间

Solaris 10 修改时间

在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 再次打开文件,但退出:q!

请注意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

现在让我们进行另一个测试:使用 vi 打开文件并退出,而不是 :q!让我们来做吧:wq! (虽然我们没有改变任何东西,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

据我所知,当读取被调用时,时间会改变,而当写入完成(写入调用)时,时间会被修改。

相关内容