【发布时间】:2012-10-20 21:09:22
【问题描述】:
我正在使用 Condor 运行多个模拟,并对程序进行了编码,以便它在控制台中输出进度状态。这是在循环结束时完成的,它只是打印当前时间(这也可以是百分比或经过的时间)。代码如下所示:
printf("开始"); 而(programNeedsToRum){ // 运行代码重复代码... // 打印程序状态更新 printf("[%i:%i:%i]\r\n", 小时, 分钟, 秒); } printf("完成");正常执行时(即在终端/cmd/bash 中)这工作正常,但秃鹰节点似乎没有printf() 的状态。仅在模拟完成后,所有状态更新都已输出到文件中,但不再使用。我提交给 condor 的 *.sub 文件如下所示:
提交后程序执行(这在condor_q 中得到确认)并且输出文件包含以下内容:
只有在程序完成运行后,其相应的输出文件才会显示(示例):
开始 [0:3:4] [0:8:13] [0:12:57] [0:18:44] 结束程序执行时,输出文件只包含START 文本。所以我得出的结论是,如果节点执行程序很忙,文件不会更新。所以我的问题是,有没有办法手动更新输出文件或以更好的方式收集有关程序进度的任何信息?
已经谢谢了
最大
【问题讨论】:
-
您的执行节点是否使用共享文件系统,或者您是否将
ShouldTransferFiles设置为 TRUE? -
我遵循了我的大学指南,并指出对于他们的系统,
should_transfer_files始终设置为TRUE,除非另有说明。我将使用该选项重新运行以确保。 -
试用:当指定
should_transfer_files和when_to_transfer_output值时,stringstream(通过 C++)创建的文件不能再被访问/创建。它没有用,即使我删除了整个stringstream并且只留下了控制台输出中的所有 condor 值,如你所说。