【发布时间】:2015-07-13 15:27:10
【问题描述】:
我正在寻找一些一般性建议,而不是编码解决方案。基本上,当通过 bsub 提交作业时,我可以通过指定以下任何一项来检索标准输入/标准输出的日志:
bsub -o log.txt % sends StdOut to log.txt
bsub -u me@email % sends StdOut to email
这些都很棒,但是我的程序在提交给 bsub 时会创建一个文件夹并存储在远程服务器上。本质上我想
a) 检索文件夹及其内容 b) 作业完成时自动执行此操作
所以我可以在技术上使用scp -r,但是我必须手动执行此操作。如果我在工作完成后收到电子邮件提醒,这还不错,但仍然 - 我必须手动执行此操作。
到 b):
好吧,我看不到 bsub 检索实际结果的任何特殊标志,只有 StdOut。我假设我可以有一个脚本,它使用sleep 并设置为工作时间(为了安全起见可能有点逗留),类似于
#!/bin/bash
scp myfile.txt server:main/subfolder
ssh bsub < myprogram.sh -u my@email
sleep <job-time>
scp -r server:main/subfolder result_folder
但是我有点担心被注销等问题以及脚本在作业完成之前终止。
有人有什么建议吗?
我本质上想要一个界面(未来的网站),用户可以在其中提交文件,远程分析文件,在工作开始/完成时向用户发送电子邮件,结果自动检索回本地/网络服务器,用户收到电子邮件说他们可以拿到结果。
不过一步一步来!
【问题讨论】:
-
如果执行节点可以访问共享存储,您可以在作业脚本中进行复制。如果您的集群管理员不希望您在执行 I/O 任务时占用 cpu,您可以将文件复制为 post exec command(例如 bsub -Ep)。如果执行节点无权访问合适的共享存储,LSF 有一个特性到copy the output back to the submission node。
-
如果系统安装了 LSF 平台数据管理器,您可以从作业中暂存数据。