我需要在 CentOS 中编写一个脚本,该脚本将在后台运行。此脚本需要检查文件名"status.txt"是否已在/root/MyFile 文件夹中创建。如果创建了该文件,则我的脚本应捕获事件。
我应该在我的脚本中编写什么代码片段,以便它获得在文件夹中创建 txt 文件的事件?
任何帮助将不胜感激。
最简单的解决方案:
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;
- 你需要相对现代的内核;
- 您需要安装通知工具;
- 如果在创建
status.txt
之前创建许多文件,则需要进行许多额外的比较操作。
恢复:
我认为,您需要第一个解决方案。
如果您的内核比 2.6.13 更新,您可以使用 inotify 机制来实现您的目标。安装软件包 inotify-tools 并使用提供的示例编写将监视您的文件的脚本