考虑两个目录A
和B
.
A
包含一个文本文件A.txt
,每 3 秒更改其内容。
shell脚本是移动A.txt
到目录B
并将其重命名为A_1.txt
.
3 秒后,脚本应复制A.txt
到A_2.txt
目录中B
。
在按下分隔符之前,脚本不应终止。
答案1
使用bash
或ksh93
和inotifywait
:
i=0
while true; do
inotifywait -e close_write A/A.txt
cp A/A.txt "B/A_$(( ++i )).txt"
done
Ctrl+C当按下时脚本终止。
注意:由于我不在 Linux 上,所以我无法inotifywait
在我的机器上实际捕获该close_write
事件,但我希望它能在 Linux 上正确执行此操作。
inotifywait
一旦打开文件A/A.txt
进行写入的外部进程完成写入并关闭文件,对 的调用就会返回。这允许脚本继续将文件复制到目录B
。
这样做比尝试将脚本与每隔一段时间写入文件的进程同步更方便。