我有一个流程,首先是最终用户使用 filezilla 软件通过 ftp 将图片文件复制到 Ubuntu 文件夹。另一方面,我有一个使用 CRON 执行的批处理文件,计划在午夜执行。
我的问题是,有时图片数量巨大,而 ftp 进程在半夜仍然在运行,最终导致图片混乱。
我想通过在 ftp 进程结束时触发 bash 脚本来修复此问题。有办法吗?
编辑:我使用的 ftp 服务器是 xampp 1.6 附带的 proftpd
答案1
@Zoredache 的想法可能是最清晰的;上传完成后触发的 ftpd 钩子。
否则,我首先想到的快速破解方法是简单地将您的 cron 脚本包装到某个程序中,该程序会检查 ftpd 进程是否正在运行。如果是,则对 pid 执行 wait()。这将阻止您的进程的执行,直到 ftpd 进程终止。请注意,这里有一个竞争条件,因为另一个 ftpd 进程可以在您的脚本执行时启动。
或者,您可以编写一个小的守护进程并使用 2.6 内核中的 inofity 系统来监视您上传的目录,并处理修改时间 < 某个阈值的任何文件;基本上是一个“最佳猜测”文件完成钩子。