我有一个在OSX上运行的bash脚本 它需要操纵网络共享上的一些文件(Synology NAS上的AFP共享)。
不幸的是,当脚本运行时,有时仍会写入这些文件。
如何确定文件是否正在使用?
正常的方法是使用" lsof",但如果其他用户来自LAN上的其他客户端,那似乎不适用于网络文件。
我可以尝试重命名该文件。我想如果文件正在使用中会失败,但这远非优雅。
有人有更好的解决方案吗?
答案 0 :(得分:3)
这不是一个通常可解决的问题。典型的解决方案是将文件写入临时位置,然后将其移动到最终处理目录(因为在文件系统中移动通常是原子的)。如果您无法控制文件的写入方式和位置,那么您将获得启发式方法,尤其是查看文件并查看文件是否在“一段时间内”没有增长,但与分离相比,这些都不是特别好来自入队的写作。
答案 1 :(得分:1)