加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在服务器上完成qsub作业时自动运行bash脚本?

发布时间:2020-12-15 22:39:22 所属栏目:安全 来源:网络整理
导读:我想在发送到服务器的所有作业完成后运行脚本. 例如,我发送 ssh server "for i in config*; do qsub ./run 1 $i; done" 然后我找回已启动的工作列表.我希望在服务器上自动启动另一个脚本,以便在完成所有这些作业后处理这些作业的输出. 我将不胜感激任何有助
我想在发送到服务器的所有作业完成后运行脚本.

例如,我发送

ssh server "for i in config*; do qsub ./run 1 $i; done"

然后我找回已启动的工作列表.我希望在服务器上自动启动另一个脚本,以便在完成所有这些作业后处理这些作业的输出.

我将不胜感激任何有助于我避免以下优雅解决方案的建议:

如果我将上述调用中的每个1000个作业ID保存在一个单独的文件中,我可以根据当前正在运行的作业列表检查每个文件的内容,即从调用输出到:

ssh qstat

我只需每半小时检查一次,但我想有更好的方法.

解决方法

这取决于您使用的作业调度程序和版本,但如果您的结果处理也可以在与作业相同的队列上完成,那么还可以采用另一种方法.

在最新版本的扭矩(以及使用网格引擎等)中管理大量相关工作的一种非常方便的方法是将任何单个作业作为作业阵列启动(参见http://docs.adaptivecomputing.com/torque/4-1-4/Content/topics/commands/qsub.htm#-t).这需要以某种方式将单个运行映射到数字,这可能是也可能不方便;但如果你可以为你的工作做到这一点,它确实大大简化了工作的管理;你可以将它们全部排成一行,你可以一次qdel或qhold它们(虽然仍然有能力单独处理工作).

如果执行此操作,则可以提交一个分析作业,该作业依赖于作业数组,只有在数组中的所有作业完成后才会运行:(参见http://docs.adaptivecomputing.com/torque/4-1-4/Content/topics/commands/qsub.htm#dependencyExamples).提交工作看起来像:

qsub analyze.sh -W depend=afterokarray:427[]

其中analyze.sh有脚本进行分析,427将是您启动的作业数组的作业ID. ([]表示仅在完成所有操作后才运行).其他调度程序(例如,SGE / OGE)的语法不同,但思路是相同的.

做到这一点可以采取一些措施,当然Tristan的方法具有简单的优点,并且可以与任何调度程序一起工作;但是在这种情况下学习使用工作阵列,如果你要做很多这样的话可能值得花时间.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读