相关疑难解决方法(0)

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

我想在发送到服务器的所有作业完成后运行脚本.

例如,我发送

ssh server "for i in config*; do qsub ./run 1 $i; done"
Run Code Online (Sandbox Code Playgroud)

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

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

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

ssh qstat
Run Code Online (Sandbox Code Playgroud)

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

ssh bash cluster-computing qsub pbs

5
推荐指数
2
解决办法
9693
查看次数

在将后续作业提交到PBS群集之前,等待用户的所有作业完成

我试图调整一些bash脚本,使它们在()集群上运行.

各个任务由几个由主脚本启动的脚本执行.到目前为止,这个主要脚本在后台启动多个脚本(通过附加&),使它们在一个多核机器上并行运行.我希望用qsubs 代替这些调用来分配集群节点的负载.

但是,有些工作依赖于其他工作才能开始.到目前为止,这是通过wait主脚本中的语句实现的.但是使用Grid Engine的最佳方法是什么?

我已经在手册页中找到了这个问题-W after:jobid[:jobid...]文档,qsub但我希望有更好的方法.我们正在谈论几个并行运行的thousend作业和另一个相同大小的一组,以便在最后一个完成之后同时运行.这意味着我必须根据很多工作排队很多工作.

我可以通过在中间使用虚拟作业来减少这种情况,除了取决于第二组可能依赖的第一组作业之外什么都不做.这会将依赖数量从数百万减少到数千,但仍然是:它是错误的,我甚至不确定shell是否会接受如此长的命令行.

  • 有没有办法等待的所有工作完成(类似的东西qwait -u <user>)?
  • 或者从这个脚本提交的所有作业(类似的东西qwait [-p <PID>])?

当然可以在循环中使用qstat和编写这样的东西,但我想这个用例非常重要,有一个内置的解决方案,我只是无法想出那个.sleepwhile

在这种情况下你会推荐/使用什么?

附录一:

由于在评论中要求:

$ qsub --version
version: 2.4.8
Run Code Online (Sandbox Code Playgroud)

也许也有助于确定准确的系统:

$ qsub --help
usage: qsub [-a date_time] [-A account_string] [-b secs]
      [-c [ none | { enabled | periodic | shutdown |
      depth=<int> | dir=<path> | interval=<minutes>}... ] …
Run Code Online (Sandbox Code Playgroud)

shell cluster-computing wait qsub pbs

5
推荐指数
1
解决办法
5278
查看次数

标签 统计

cluster-computing ×2

pbs ×2

qsub ×2

bash ×1

shell ×1

ssh ×1

wait ×1