我想知道访问时间是多少。我在网上搜索但得到了相同的定义:
读 - 变了
我知道touch
我们可以改变它。任何人都可以用一个例子向我解释一下它是如何改变的吗?有没有办法在unix中获取创建日期/时间?
答案 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单位。