gpt4 book ai didi

允许 TORQUE 中的 qsub 等待作业完成的 Bash 脚本,非常类似于 SGE 系统中的 -sync y

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

我正在使用带有 Torque/Maui 系统的集群。我有一个 bash 脚本,它使用 qsub 命令提交一个作业,然后做几件事,比如移动文件、写入 ASCII 文件,并检查我提交的作业的输出。关于这个输出,基本上,如果它包含数字 1,则需要再次提交作业。如果与 1 不同,bash 脚本会执行其他操作。

问题是 qsub 在后台运行,所有的 bash 都是一次性计算的。我想强制 qsub 的行为与 awk、cat、sort 等非常相似......当脚本在这些命令完成后进一步运行时 - 如果不放在后台。

所以,我需要让 bash 在第一个 qsub 停止,并在 qsub 完成后继续运行,这意味着,当作业完成时。有什么办法吗?它将类似于:

   -sync y    # in the SGE system, for instance.

我有什么:

#!/bin/bash
.
.
some commands
.
.
qsub my_application # need to wait until my_application get done
.
.
more commands
.
.
my_application_output=(`cat my_application_output.txt`)

case "$my_application_output" in
["1"])
qsub my_application
;;
["0"])
some commands
;;
["100"])
some commands
;;
*)
some commands
exit 1

esac

.
.

一些评论


  • 不方便使用:qsub -I -x,一旦我想将输出保留在输出文件上;并且不想通过启动交互模式 (-I) 来锁定节点
  • 我猜这不是一个简单的工作依赖问题,一旦重新提交 1) 可能发生,2) 不能,最重要的是,如果发生 (1),它可以多次提交。

谢谢大家

最佳答案

Quim 10 月 3 日 4:05:“这不是一个简单的工作依赖性问题”

您必须创建一个简单的作业依赖性问题——无论如何简单到足以让您的脚本处理。事实上,您的脚本控制在 my_application_output.txt 上,所以为什么不在上面 sleep 呢?像

#!/usr/bin/env bash
# I prefer to have constants at the top
my_application_output_fp='/path/to/my_application_output.txt'
#
#
# some commands
#
#
qsub my_application
#
#
# more commands
#
#

# sleep until my_application outputs
while [[ ! -r "${my_application_output_fp}" ]] ; do
sleep 1
done

my_application_output="$(cat ${my_application_output_fp})"
# process it

如果 my_application_output.txtmy_application 结束之前写入太长,更改 my_application 以在之前写入标志文件它退出,然后进入:

#!/usr/bin/env bash
my_application_flag_fp='/path/to/my_application_flag.txt'
my_application_output_fp='/path/to/my_application_output.txt'
#
#
# some commands
#
#
qsub my_application
#
#
# more commands
#
#

# sleep until my_application writes flag
while [[ ! -r "${my_application_flag_fp}" ]] ; do
sleep 1
done

if [[ ! -r "${my_application_output_fp}" ]] ; then
# handle error
fi
# else
my_application_output="$(cat ${my_application_output_fp})"
# process it

关于允许 TORQUE 中的 qsub 等待作业完成的 Bash 脚本,非常类似于 SGE 系统中的 -sync y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26173141/

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