我有一个批处理脚本,它从几个qsub作业开始,我想在它们全部完成后陷阱.
我不想使用-sync选项,因为我希望它们同时运行.每个作业都有一组不同的命令行参数.
我希望我的脚本等到所有工作完成后再做一些事情.我不想使用睡眠功能,例如检查每30秒后是否生成了某些文件,因为这会消耗资源.
我相信Torque可能有一些选择,但我正在运行SGE.
有关如何实现这一点的任何想法吗?
谢谢Ps我找到了另一个线程 链接
有一个反应
您可以使用wait来停止执行,直到完成所有作业.您甚至可以收集所有退出状态和其他运行统计信息(花费的时间,当时完成的工作数,无论如何),如果您循环等待特定ID.
但我不知道如何在不轮询某些价值的情况下使用它.可以使用bash陷阱,但我如何使用qsub?
SDG*_*tor 35
启动qsub作业,使用-N选项为它们指定任意名称(job1,job2等):
qsub -N job1 -cwd ./job1_script
qsub -N job2 -cwd ./job2_script
qsub -N job3 -cwd ./job3_script
Run Code Online (Sandbox Code Playgroud)
启动脚本并告诉它等到名为job1,job2和job3的作业在启动之前完成:
qsub -hold_jid job1,job2,job3 -cwd ./results_script
Run Code Online (Sandbox Code Playgroud)
如果所有作业的名称都具有通用模式,则您可以在提交作业时提供该模式。https://linux.die.net/man/1/sge_types向您展示了您可以使用的模式。例子:
-hold_jid "job_name_pattern*"
Run Code Online (Sandbox Code Playgroud)
小智 3
qsub -hold_jid job1,job2,job3 -cwd ./myscript
Run Code Online (Sandbox Code Playgroud)