当文件更改时执行命令

当文件更改时执行命令

我有一种情况,我每天都将 .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

项目网站:http://eradman.com/entrproject/

在线手册页:https://www.systutorials.com/docs/linux/man/1-entr/

答案3

watchexechttps://watchexec.github.io/) 命令行实用程序听起来正是你所需要的,但我相信要安装它,你需要在你的机器上安装 Rust 构建工具,所以这可能是一个交易破坏者

答案4

尝试查看iwatch(仅适用于 Linux,因为 inotify)或fswatch命令。

您可能需要在您的机器上安装它们。例如,对于 Debian Linux(bookworm 版本),它很简单

sudo aptitude install iwatch

或者

sudo aptitude install fswatch

相关内容