1

这是情况。用 Python 编写的 Script1 将文件生成到其本地目录。当文件“就绪”时,script1 将其移动到就绪目录。例如,Script2 监视准备好的目录并将文件从它移动到远程服务器。所以,问题是:如何确保script2从准备好的目录中移动文件,然后script1完成移动它?

我可以建议的唯一决定是在移动到准备好的目录时添加一些前缀,并在移动完成后重命名文件。Script2 应该只移动没有前缀的文件。这个决定是否适合我的情况?

UPD。我正在使用 Debian 6 最小。由于安全原因,我没有使用 script1 将文件复制到远程服务器。

4

1 回答 1

1

您可以将事件添加到 incron 表以“监视”/ready 文件夹。

要从命令行查看您的 incron 表:

incrontab -e

可能它是空的,您可以这样添加一个事件:

/folder/path/to/ready IN_CLOSE_WRITE /path/to/the/second/script/Script2.sh $#

请注意,我在此事件中直接引用的是 shell 脚本,而不是 python 文件。INCRON 将文件名作为第一个参数传递给脚本 ( $1 )。此行只是等待在 /folder/path/to/ready 中发生 IN_CLOSE_WRITE 事件,当 Script1 完成将文件移动到此文件夹时将触发该事件。

然后,您可以创建 Script2.sh 以使用任何其他依赖项调用您的 python 脚本(例如激活虚拟环境)。

一个简单的 shell 脚本可能如下所示:

python script2.py $1

然后只需确保您的第二个脚本按您的意图处理传入的文件 - 将其移动到远程服务器。

有关 INCRON 的更多信息,请参见http://linux.die.net/man/5/incrontab

于 2013-05-22T15:56:41.763 回答