0

小故事:需要一种方法从客户端(使用 CMD 批处理)获取服务器上文件的写入状态(使用 BASH)。

长期潜伏者,首次海报。我对我正在寻找的各种变体进行了多次搜索,但还没有找到足够的数据。

我正在用 CMD 编写一个批处理文件(因为客户端可以是安装了未知软件包的任何 WinOS [XP - up])。该批次使用 puTTY 的“plink”通过 SSH 连接到服务器。一旦连接到服务器,plink 就会执行命令将数据写入新文件。写完那个文件后,我使用 PSCP 将文件复制到客户端 到目前为止,一切顺利;我已经成功地完成了这一切。

该文件的创建是即时的,但写入所有数据所需的时间是未知/可变的。因此,我需要一种自动化方法来确定文件何时完成,然后复制它。在我的情况下,简单地使用超时/睡眠 XX 秒是不可行的。

到目前为止,我采取的方法(迄今为止尚未成功)是使用“stat -c '%s' filemane”重复抓取文件大小并循环运行,直到grab1 EQU grab2,指示一个完整的文件。我发现这很困难,因为我无法将 stat 的输出放入 CMD 批处理中进行处理。

Q1:这(统计结果进入 CMD for 循环)是最好的方法吗?也许 BASH 中存在一些东西?

Q2:如果 Q1 为真,关于如何将统计结果作为变量放入 CMD 批处理以解析/分析数据的任何想法?

提前感谢您的建议和您的时间。DCT

4

1 回答 1

0

让写入文件的命令使用临时文件名写入文件。因此,如果将调用它xyz.txt,将其写入 filename tmpxyz.txt.tmp,那么最后一步将是重命名。

这样您就可以检查命名文件是否存在。

我发现通常给文件一个唯一的名称是个好主意,可能包含日期和时间。

于 2012-06-26T14:22:52.763 回答