短篇小说:需要一种方法从客户端(使用CMD批处理)获取服务器上文件的写入状态(使用BASH)。
长期潜伏,第一次海报。我对我正在寻找的变化做了很多搜索,但还没有找到足够的数据。
我正在CMD中编写批处理文件(因为客户端可能是安装了未知软件包的任何WinOS [XP-up])。批处理使用puTTY的“plink”通过SSH连接到服务器。连接到服务器后,plink会执行命令将数据写入新文件。 写完文件后,我使用PSCP将文件复制到客户端 到目前为止,这么好;我已成功完成所有这些。
该文件的创建是即时的,但编写所有数据所需的时间是未知/可变的。因此,我需要一个自动方法来确定文件何时完成,然后复制它。在我的情况下,简单地使用超时/睡眠时间为XX秒是不可行的。
到目前为止我所采用的方法(目前尚未成功)是使用“stat -c'%s'filemane”重复抓取文件大小并在循环中运行直到抓取EQU EQU2,表示完整文件。我发现这很困难,因为我无法将stat输出到CMD批处理中来处理它。
Q1:这是(统计结果进入CMD for循环)最好的方法吗?也许BASH中存在某种东西?
Q2:如果Q1为真,那么有关如何将统计结果作为变量来解析/分析数据的任何想法?
提前感谢您的建议和时间。 DCT
答案 0 :(得分:0)
让编写文件的命令用临时文件名写入。因此,如果它被称为xyz.txt
,请使用文件名tmpxyz.txt.tmp
编写,那么最后一步将是重命名。
这样你就可以检查是否存在指定的文件。
我发现,通常一个好主意是给文件一个唯一的名称,可能包含日期和时间。