小编Alb*_*non的帖子

为什么 Linux 中的文件系统时间总是比系统时间晚一些毫秒?

在Linux中,文件系统时间似乎总是落后系统时间几毫秒,如果您想检查文件是否在给定时间之前或之后在非常窄的时间范围(毫秒)内被修改,则会导致不一致。

在任何具有支持纳秒分辨率的文件系统的 Linux 系统中(我尝试使用具有 256 字节 inode 和 ZFS 的 ext4),如果您尝试执行以下操作:

date +%H:%M:%S.%N; echo "hello" > test1; stat -c %y test1 | cut -d" " -f 2
Run Code Online (Sandbox Code Playgroud)

第二个输出值(文件修改时间)始终比第一个输出值(系统时间)晚几毫秒,例如:

17:26:42.400823099
17:26:42.395348462
Run Code Online (Sandbox Code Playgroud)

而它应该是相反的,因为文件在调用命令后被test1修改。date

你可以在 python 中得到相同的结果:

date +%H:%M:%S.%N; echo "hello" > test1; stat -c %y test1 | cut -d" " -f 2
Run Code Online (Sandbox Code Playgroud)
1698255477.3125281
1698255477.3070245
Run Code Online (Sandbox Code Playgroud)

为什么会这样,有没有办法避免它,使系统时间与文件系统时间一致?到目前为止,我发现的唯一解决方法是通过创建一个虚拟临时文件并获取其修改时间来获取文件系统“时间”(无论这在实践中意味着什么),如下所示:

17:26:42.400823099
17:26:42.395348462
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更清洁的解决方案。

linux filesystems timestamps time

35
推荐指数
2
解决办法
2981
查看次数

标签 统计

filesystems ×1

linux ×1

time ×1

timestamps ×1