从 2.6.30 版本(5 年前发布)开始,Linuxrelatime默认启用该选项。这意味着文件访问时间的更新非常罕见且谨慎。
但我仍然看到建议使用noatime的数据库或SSD盘。是否有任何理由更改默认配置并使用它?与 相比是否有任何可衡量的差异relatime?
我尝试使用命令
ls --time=atime
它在一个目录中工作,但不在另一个目录中工作。我在 vim、evince 和其他应用程序中打开了某些文件,但是在命令文件访问时间没有改变之后。
当我输入时touch file.txt访问时间改变了,但当我输入时vim file.txt访问时间没有改变。
这里有什么问题?
当您运行时./myscript.sh,这是否被视为“访问”时间?
我需要知道上次运行脚本的时间,但我不确定这是否算作mtime,ctime或atime(此处描述的差异)。
我正在运行以下命令,该命令应该根据其访问时间元数据详细信息查找特定目录,但是由于某种原因,find 命令更改了这些目录的访问时间。
find /my/directory/ -mindepth 3 -maxdepth 3 -atime +2 -type d
Run Code Online (Sandbox Code Playgroud)
每次运行上述命令时,它都会将目录的访问时间更改为执行时间。
我找不到有关保留元数据的“查找”命令的任何选项。这里的任何想法将不胜感激。
谢谢!
使用ext4文件系统,我能够使用此处的方法读出文件的创建时间。结果,我确实得到了一个表,其中包含所crtime讨论的 inode(相应文件)的(创建时间)。
让我感到困惑并且我无法在 中找到答案的man debugfs是为什么它向我显示了 2 行crtime,而且甚至不是同一时间。
这是我得到的输出
[user ~] $ sudo debugfs -R "stat <274742>" /dev/sda2
debugfs 1.43.1 (08-Jun-2016)
Inode: 274742 Type: regular Mode: 0644 Flags: 0x80000
Generation: 3666549610 Version: 0x00000000:00000001
User: 1000 Group: 1000 Project: 0 Size: 0
File ACL: 0 Directory ACL: 0
Links: 0 Blockcount: 0
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x57b4c632:1e30ee34 -- Wed Aug 17 22:16:50 2016
atime: 0x57b4c4c0:afa082b0 -- …Run Code Online (Sandbox Code Playgroud) 我刚刚:
我将那里的答案解释如下:“如果您没有依赖 atime 有效的应用程序,则不需要它们。”
想想我的家庭 Linux 系统,它对任何人都没有任何服务(而且我不使用本地 MUA,反正我不知道),在我看来我可以安全地设置noatime(和nodiratime) . 但也许我错了?一些通常安装的应用程序仍然使用它吗?我对此表示怀疑,因为我不明白为什么有人会期望操作系统为所有内容维护时间,以便它可以知道自己的几个文件的时间。
我在 Mac 上使用 NFS 分区。像这样的命令du需要很长时间,我正在考虑卸载 NFS 并使用 noatime 和 nodirtime 重新安装它。自从我开始工作以来,分区已经挂载了,所以我不知道NFS分区是否已经用noatime或nodirtime挂载了。
如何判断安装是否启用了 noatime 和/或 nodirtime?
我正在使用内核 4.4 运行 Debian/Testing:
# uname -a
Linux shaula 4.4.0-1-amd64 #1 SMP Debian 4.4.6-1 (2016-03-17) x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)
所以我想使用lazytimemount 选项,这就是为什么我把以下内容放在我的/etc/fstab:
# grep vg_crypt-root /etc/fstab
/dev/mapper/vg_crypt-root / ext4 lazytime,errors=remount-ro 0 1
Run Code Online (Sandbox Code Playgroud)
但是,现在文件系统似乎同时安装了 relatime和lazytime:
# grep vg_crypt-root /etc/mtab
/dev/mapper/vg_crypt-root / ext4 rw,lazytime,relatime,errors=remount-ro,data=ordered 0 0
Run Code Online (Sandbox Code Playgroud)
怎么会这样?
使用该cat命令读取文件后,我使用该stat命令查看它更改的访问时间,但它没有得到更新。
我检查了/etc/fstab文件,但noatime我的任何驱动器上都没有文件,那么为什么访问时间没有更新?
我正在使用 Ubuntu 12.04 Precise Pangolin。
我有这个:
$ ls -l ff
ls: cannot access ff: No such file or directory
$ touch ff
$ stat ff
File: `ff'
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 803h/2051d Inode: 1057193 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ abc) Gid: ( 0/ root)
Access: 2011-09-18 20:36:08.351097228 -0700
Modify: 2011-09-18 20:36:07.340839847 -0700
Change: 2011-09-18 20:36:07.340839847 -0700
Run Code Online (Sandbox Code Playgroud)
为什么 mtime 和 ctime 比 atime 早?
的手册页ls说:
-u with -lt: sort by, and show, access time; with -l: show access time and sort by name;
otherwise: sort by access time
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用:
test@debian:~$ date > file
test@debian:~$ date
Sun Jan 17 13:21:12 CET 2016
test@debian:~$ cat file
Sun Jan 17 13:20:10 CET 2016
test@debian:~$ ls -lu file
-rw-r--r-- 1 test test 29 Jan 17 13:21 file
test@debian:~$ date
Sun Jan 17 13:22:02 CET 2016
test@debian:~$ cat file
Sun Jan 17 13:20:10 CET 2016
test@debian:~$ ls …Run Code Online (Sandbox Code Playgroud) atime ×12
files ×6
filesystems ×5
timestamps ×4
linux ×3
ext4 ×2
ls ×2
email ×1
executable ×1
find ×1
fuse ×1
linux-kernel ×1
mount ×1
osx ×1