【问题标题】:Automatic qsub job completion status notification自动 qsub 作业完成状态通知
【发布时间】:2015-07-28 06:46:56
【问题描述】:

我有一个 shell 脚本,它可以从中调用其他五个脚本。第一个脚本在集群中创建 50 个 qsub 作业。单个作业的执行时间从几分钟到一个小时不等。我需要知道所有 50 个作业何时完成,因为在完成所有作业后,我需要运行第二个脚本。如何查看所有 qsub 作业是否已完成?一种可能的解决方案是使用无限循环并使用带有作业 ID 的 qstate 命令检查作业状态。在这种情况下,我需要不断检查作业状态。这不是一个很好的解决方案。是否有可能在执行后,qsub 作业会自行通知我。因此,我不需要经常监控工作状态。

【问题讨论】:

  • 顺便说一句:您可以使用 qsub 的 -m 选项获取通知,但这不是您要的:)

标签: linux bash shell unix qsub


【解决方案1】:

我从未听说过如何做到这一点,如果有人能提供一个好的答案,我会非常感兴趣。

同时,我建议你使用文件技巧。您的脚本在最后输出一个文件,或者您检查日志文件是否存在(假设它们仅在最后创建)。

while [ ! -e ~/logs/myscript.log-1 ]; do
    sleep 30;
done

【讨论】:

    【解决方案2】:

    qsub 能够使用-W depend=afterok:jobid 处理作业依赖关系。

    例如

    #!/bin/bash
    
    # commands to run on the cluster
    COMMANDS="script1.sh script2.sh script3.sh"
    # intiliaze JOBID variable
    JOBIDS=""
    # queue all commands
    for CMD in $COMMANDS; do
        # queue command and store the job id
        JOBIDS="$JOBIDS:`qsub $CMD`"
    done
    # queue post processing, depended on the submitted jobs
    qsub -W depend=afterok:$JOBIDS postprocessing.sh
    
    exit 0
    

    更多示例可以在这里找到http://beige.ucs.indiana.edu/I590/node45.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 2016-11-26
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多