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

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

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

最佳答案

您可以将事件添加到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

关于python - 确保文件 move 结束,然后由其他程序复制,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16690985/

10-11 20:47
查看更多