use*_*717 4 linux bash shell-script
我正在寻找一种方法来监视文件并在文件被删除后立即触发事件。一旦它被删除,我将替换/复制一个新文件并再次启动监视器。
例如
watch "/tmp/fileToMonitor.txt"
// file deleted by some process
cp new_file "/tmp/fileToMonitor.tx"
// watch file again (repeat same steps..)
Run Code Online (Sandbox Code Playgroud)
我怎样才能用 bash 脚本做到这一点?这可能吗?
小智 6
您可以使用inotifywait实用程序(从inotify-tools包中,至少在 Debian 下)执行此操作。
inotifywait可以将事件名称作为参数,并在返回之前等待它们在受监视的文件或目录上发生。在您的情况下,您需要使用该delete_self事件来指示您希望程序在被监控文件被删除时返回。
因此,要/tmp/fileToMonitor.txt在删除后立即复制新文件,您可以执行以下操作:
inotifywait -e delete_self "/tmp/fileToMonitor.txt" && cp new_file "/tmp/fileToMonitor.txt"
Run Code Online (Sandbox Code Playgroud)
如果你想再次开始监控,你可以把它放在一个循环中:
while true ; do
inotifywait -e delete_self "/tmp/fileToMonitor.txt" \
&& cp new_file "/tmp/fileToMonitor.txt"
done
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4483 次 |
| 最近记录: |