对 HP-UX 上目录中的传入文件做出反应

对 HP-UX 上目录中的传入文件做出反应

如何使用脚本实现此逻辑:

监视目录中新传入的文件。如果目录中 3 小时未收到文件或者收到的文件为空,则执行某些操作。文件名是动态生成的。

我如何将其放入脚本中?

答案1

看起来惠普-UX没有像 FAM/FSEvent/inotify 这样的东西来对传入的文件做出反应。这使得轮询成为唯一的解决方案。

这是一个概念验证脚本,它每分钟触发一次,并process在每个新文件上调用该程序(在该程序中放入您想要的任何内容),然后将文件移动到不同的目录。将文件移动到不同的目录是为了避免导致文件被跳过或多次处理的竞争条件;如果您确实需要将文件保留在同一目录中,请维护已处理文件的列表。

#!/usr/bin/env ksh93
last_SECONDS=0
while sleep 60; do
  new_files=$(find INCOMING -exec process {} \; -exec mv {} PROCESSED \; -print)
  if [[ -n $new_files ]]; then
    last_SECONDS=$SECONDS
  elif ((SECONDS - last_SECONDS >= 3600 * 3)); then
    echo "More than 3 hours without a new file"
  fi
done

相关内容