Unix中的访问时间是多少

Ara*_*rav 10 unix linux

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

读 - 变了

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

sar*_*old 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 */
       };
Run Code Online (Sandbox Code Playgroud)

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 */
       };
Run Code Online (Sandbox Code Playgroud)

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

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

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


pro*_*son 18

  • 上次访问:上次访问文件数据的时间.由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)系统调用更改.