在我们的生产服务器 (AIX) 中,每微秒都会有多个 API 调用,这些 API 调用详细信息将附加在名为记录日志。另一方面,我们使用日志中的数据在仪表板中发布,因此我们将使用以下命令获取过去 5 分钟内更新的日志文件:
find . -type f -name ins.log -mmin -5
如果没有-mmin
,该命令会找到该文件,并且可以看到该文件的修改时间是最近的:
$ date
Tue Aug 29 18:34:54 +08 2023
$ find . -type f -name ins.log | xargs ls -l
-rw-r--r-- 1 123456 123grp 74356 Aug 29 18:34 ./ins.log
但是当我添加时却-mmin
找不到该文件。
$ date
Tue Aug 29 18:35:41 +08 2023
$ find . -type f -name ins.log -mmin -60
例如
- 如果 ins.log 在 3:15 更新,系统日期为 3:15 并且脚本在 3:15 运行,则在 3:15 更新的 ins.log 不会出现在输出中
答案1
的文档find -mmin
在 AIX 上将此描述为预期效果:
find
不考虑命令启动时间之后修改的文件
因此,由于您(非常)频繁地更新该文件,因此它会在您启动find
命令后更新,因此将从列表中省略。
该修复在同一个注释段落中进行了描述:
当该
find
命令在一元运算符 […] 中使用时NOT
,将显示在该命令开始时间之后修改的文件,直到 的值为止n
。
按照这个细节,您应该只需要反转测试,以便您可以使用!
:
find . -type f -name 'ins.log' ! -mmin +59