0

我需要在 CentOS 中编写一个脚本,它将在后台运行。该脚本需要检查是否在 /root/MyFile 文件夹中创建了文件名“status.txt”。如果创建了该文件,则我的脚本应捕获一个事件。

我应该在我的脚本中编写什么代码片段,以便获取已在文件夹中创建 txt 文件的事件?

任何帮助是极大的赞赏。

4

2 回答 2

1

最简单的解决方案:

while true; do
do
  [ -e "/root/MyFile/status.txt" ] && { echo file is created; break; }
  sleep 1
done

而不是echo file is created您可以编写要执行的命令。

您可以使用inotify进行相同的操作:

inotifywait --format '%f' -m /root/MyFile 2> /dev/null | while read file
do
  [ "$file" = status.txt ] \
  && [ -e "/root/Myfile/$file" ] \
  && { echo file is created ; break; }
done

该解决方案的优点是您将立即获得操作,因为将创建文件。在第一种情况下,您也将等待第二种情况。第二个优点是您需要每秒轮询文件系统。

但这种解决方案也有缺点:

  • 它仅适用于 Linux;
  • 你需要相对现代的内核;
  • 你需要安装inotify-tools;
  • 如果您在创建之前创建了许多文件status.txt,那么您将进行许多额外的比较操作。

恢复:

我认为,您需要第一个解决方案。

于 2012-10-03T07:32:18.553 回答
0

如果您的内核比 2.6.13 更新,您可以使用inotify机制来实现您的目标。使用提供的示例安装包inotify-tools并编写将监视您的文件的脚本

于 2012-10-03T07:26:35.637 回答