Bash:轮询文件创建并在退出时终止

Bash:轮询文件创建并在退出时终止

我正在尝试编写一个捕获退出信号并终止的脚本。我不想使用通常的 bash 陷阱方法,而是希望每 10 秒监视一次文件创建,并在终止之前清理一些内容。

这是我尝试过的:

poll_time=10 // poll every 10 seconds
((term_time=$SECONDS+240)) // monitor until 4 min from current script time exec

while (( $SECONDS < $term_time)) do
    if [[ -r $some_path/file.txt ]]; then
        cleanup_function
        exit
fi
sleep ${poll_time}
done

//if file doesnt exit continue with below code
//blah blah blah ....

有一个更好的方法吗?上面的代码行可以工作吗?

答案1

inotifywaitfrominotify-tools是你需要的(至少看看)。像这样的行将执行您的脚本想要执行的相同操作:

inotifywait -e create --timeout 240 "${some_path}/file.txt" && { cleanup_function; exit ; }

区别inotifywait在于以基于事件的方式工作,因此不需要轮询或休眠。

相关内容