我有一种情况,我每天都将 .csv 文件上传到特定文件夹 /tmp/data_upload,然后旧文件被新文件替换。
我需要数据上传后运行 Python 脚本。为此,我有一个想法,创建一个 cron 作业并监视文件中的更改。我尝试使用 inotify,但我对 Unix 领域不太了解。我该怎么做?
一旦上传文件夹中的文件(例如 /tmp/data_upload)的日期发生变化,我就需要执行脚本 test.py。
答案1
您可能需要 incrond(inotify cron 守护程序),它将监视文件的变化,然后执行脚本。
Incrond 可以监控添加新文件、修改、删除等操作。这是一篇文章通过一些示例展示 incrond 可以监控哪些事件。
例如,您可以创建/etc/incron.d/data_upload
包含以下内容的文件
/tmp/data_upload IN_CREATE,IN_MODIFY /path/to/test.py
答案2
你可以使用进入通过在启动时运行一次,每次文件发生变化时自动运行脚本ls /tmp/data_upload | entr -p script.py
。
答案3
这watchexec
(https://watchexec.github.io/) 命令行实用程序听起来正是你所需要的,但我相信要安装它,你需要在你的机器上安装 Rust 构建工具,所以这可能是一个交易破坏者
答案4
尝试查看iwatch
(仅适用于 Linux,因为 inotify)或fswatch
命令。
您可能需要在您的机器上安装它们。例如,对于 Debian Linux(bookworm 版本),它很简单
sudo aptitude install iwatch
或者
sudo aptitude install fswatch