Aix

如何判斷文件在 AIX 上是否超過 30 分鐘?

  • May 24, 2012

我想在 ksh 或 bash 中編寫一個 shell 腳本,如果特定文件超過 30 分鐘,它會以 1 退出。(最後修改時間超過半小時)。在 Linux 或現代 unix 上會很容易,但我必須在 AIX 5.2 版本上完成。

所以約束:

  • ‘find’ 中沒有 -mmin -mmax 選項
  • touch 沒有 -d 選項(touch -d ‘30 minutes ago’ temp then find ! -newer temp不起作用)
  • 沒有“stat”命令
  • ‘date’ 命令中沒有 %s 參數(date +%s不起作用)
  • 我不允許安裝任何軟體

你能幫我解決這些限制嗎?

我可以使用 , 和 來做到touchtest一點date。(在 AIX 5.3.0.0 上測試)

首先,您需要在過去 30 分鐘內創建一個文件(不幸的是,這需要事先了解機器上的目前時區。但如果需要,您可以將其用於處理。)

在此範例中,目前時區為 EST5EDT (GMT-4)。如果幸運的話,機器時區將設置為 GMT,您可以使用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

現在使用 test 來比較日期:

-bash-3.00# test '/smit.log' -ot foo && echo 'smit.log is older than 30min'
smit.log is older than 30min

引用自:https://serverfault.com/questions/373545