如何在 AIX 上判断文件是否超过 30 分钟?

csa*_*dam 5 find aix date

我想在 ksh 或 bash 中编写一个 shell 脚本,如果特定文件超过 30 分钟,它会以 1 退出。(上次修改时间早于半小时)。在 Linux 或现代 unix 上会很容易,但我必须在 AIX 5.2 版本上这样做。

所以约束:

  • “查找”中没有 -mmin -mmax 选项
  • 触摸中没有 -d 选项(触摸 -d '30 分钟前' temp然后找到!-新的温度不起作用)
  • 没有“统计”命令
  • “日期”命令中没有 %s 参数(日期 +%s不起作用)
  • 我不允许安装任何软件

你能帮我解决这些限制吗?

Mik*_*eyB 5

我可以只使用touch, test, 和 来完成date。(在 AIX 5.3.0.0 上测试)

首先,您需要在过去 30 分钟创建一个文件(不幸的是,这需要事先了解机器上的当前时区。但如果需要,您可以将其用于处理。)

在此示例中,当前时区是 EST5EDT (GMT-4)。如果幸运的话,机器时区将设置为格林威治标准时间,您可以使用TZ=00:30

-bash-3.00# date
Mon 26 Mar 14:22:31 2012
-bash-3.00# touch -t `TZ=04:30 date '+%Y%m%d%H%M.%S'` foo
-bash-3.00# ls -al foo
-rw-r--r--   1 root     system            0 26 Mar 13:52 foo
Run Code Online (Sandbox Code Playgroud)

现在使用 test 来比较日期:

-bash-3.00# test '/smit.log' -ot foo && echo 'smit.log is older than 30min'
smit.log is older than 30min
Run Code Online (Sandbox Code Playgroud)