Unix中的访问时间是多少

时间:2010-08-02 05:20:33

标签: linux unix

我想知道访问时间是多少。我在网上搜索但得到了相同的定义:

  

读 - 变了

我知道touch我们可以改变它。任何人都可以用一个例子向我解释一下它是如何改变的吗?有没有办法在unix中获取创建日期/时间?

4 个答案:

答案 0 :(得分:22)

stat(2)结构跟踪所有文件日期/时间:

       struct stat {
           dev_t     st_dev;     /* ID of device containing file */
           ino_t     st_ino;     /* inode number */
           mode_t    st_mode;    /* protection */
           nlink_t   st_nlink;   /* number of hard links */
           uid_t     st_uid;     /* user ID of owner */
           gid_t     st_gid;     /* group ID of owner */
           dev_t     st_rdev;    /* device ID (if special file) */
           off_t     st_size;    /* total size, in bytes */
           blksize_t st_blksize; /* blocksize for file system I/O */
           blkcnt_t  st_blocks;  /* number of 512B blocks allocated */
           time_t    st_atime;   /* time of last access */
           time_t    st_mtime;   /* time of last modification */
           time_t    st_ctime;   /* time of last status change */
       };

st_atime访问时间,在read(2)次调用时更新(可能还会在open(2)打开文件进行阅读时) - 它未更新何时通过mmap(2)读取文件。 (这就是我假设open(2)将标记访问时间的原因。)

st_mtime数据修改时间,可通过write(2)truncate(2)open(2)进行编写。 (同样,当通过mmap(2)写入文件时,它不会更新。)

st_ctime元数据修改时间:当struct stat中的任何其他数据被修改时。

您可以使用utime(2)更改文件的时间戳:

       struct utimbuf {
           time_t actime;       /* access time */
           time_t modtime;      /* modification time */
       };

请注意,您只能更改访问时间和(数据)修改时间。您可以将其中任何一个设置为任意时间,但ctime将设置为当前时间 - 因为您更改了文件的元数据。

此结构中没有创建时间,因此无法确定何时直接从系统创建文件。

如果您确实需要了解创建时间,可以通过查看备份将其缩小到范围 - 假设您感兴趣的文件已备份,以及其元数据。

答案 1 :(得分:16)

  • 上次访问:上次访问文件数据的时间。由mknod(2),utimes(2)和read(2)系统调用更改。

  • 上次修改:上次修改文件数据的时间。由mknod(2),utimes(2)和write(2)系统调用更改。

  • 上次更改:上次更改文件状态的时间(inode数据修改)。由chmod(2),chown(2),link(2),mknod(2),rename(2),unlink(2),utimes(2)和write(2)系统调用更改。

    < / LI>

答案 2 :(得分:1)

与上述答案相反,创建或实际“出生”日期已存储并可以访问,请参阅 https://unix.stackexchange.com/a/50184/8250 (debugfs应该在sudo下完成)

答案 3 :(得分:-5)

存储在特定组件(如硬派生或RAM)中的信息请求与其交付之间的平均时间。换句话说,在读取请求和所需单词到来之间的时间。例如235,288单位/ 13,82交易=每笔交易16.8单位。