gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:02:11 24 4
gpt4 key购买 nike

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

比如我发送

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 )。这需要以某种方式将单个运行映射到数字,这可能方便也可能不方便;但如果你能为你的工作做到这一点,它确实会大大简化工作管理;你可以在一行中将它们全部 qsub,你可以一次全部 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 的方法具有简单的优点,并且可以与任何调度程序一起使用;但是,如果您要经常这样做,那么在这种情况下学习使用作业数组可能值得您花时间。

关于bash - 当我的 qsub 作业在服务器上完成时,如何自动运行 bash 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3886168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com