【问题标题】:How to use LSB_JOBINDEX in bsub array job arguments in Platform LSF?如何在平台 LSF 的 bsub 数组作业参数中使用 LSB_JOBINDEX?
【发布时间】:2019-04-04 06:09:35
【问题描述】:

我想将 LSB_JOBINDEX 作为参数传递给我的脚本,而不是使用环境变量。

这使我的脚本更加与 LSF 无关,并避免创建使用环境变量的帮助脚本。

但是,我无法在参数中使用LSB_JOBINDEX:它只能作为初始命令字符串的一部分。

例如,在 bash shell 中,我使用 test 命令:

bsub -J 'myjobname[1-4]' -o bsub%I.log \
  'echo $LSB_JOBINDEX' \
  '$LSB_JOBINDEX' \
  \$LSB_JOBINDEX \
  '$LSB_JOBINDEX' \
  "\$LSB_JOBINDEX"

bsub2.log 的输出是:

2 $LSB_JOBINDEX $LSB_JOBINDEX $LSB_JOBINDEX $LSB_JOBINDEX

所以在这种情况下,只有第一个 $LSB_JOBINDEX 得到了扩展,而以下任何一个都没有。

但我宁愿不将整个命令作为单个大字符串传递,如本例中的'echo $LSB_JOBINDEX'。我宁愿像在常规 bash 命令中那样使用单独的参数。

我也尝试过使用%I,但它仅适用于-o 和相关的bsub 选项,不适用于命令本身。

相关:Referencing job index in LSF job array

在 LSF 10.1.0 中测试。相关文档:https://www.ibm.com/support/knowledgecenter/en/SSWRJV_10.1.0/lsf_admin/job_array_cl_args.html

【问题讨论】:

    标签: lsf


    【解决方案1】:

    如果参数以$ 开头,bsub 将在参数周围添加单引号。例如。如果bsub命令行是

    bsub command -a $ARG1 -b $ARG2
    

    然后 bsub 将为第二个和第四个参数的参数添加引号。命令是这样存储的

    command -a '$ARG1' -b '$ARG2'
    

    防止这种情况的一种方法是将命令放入脚本中。像这样:

    $ cat cmd
    echo $LSB_JOBINDEX
    echo "line 2"
    echo $LSB_JOBINDEX
    

    然后像这样运行你的工作:

    $ bsub -I < cmd
    Job <2669> is submitted to default queue <normal>.
    <<Waiting for dispatch ...>>
    <<Starting on hostA>>
    0
    line 2
    0
    

    请注意,不需要-I。只是为了让您可以在 bsub 的标准输出上看到作业输出。

    编辑

    好的。看起来这行得通。但这并不是一个真正的严肃答案,因为它太丑了。问题是如果参数以$ 开头,bsub 将用单引号将参数括起来。所以策略是想办法确保参数中的第一个字符不是$。一种方法是将$ 以外的任何字符作为参数的第一个字符。后面是退格文字,然后是 $。请注意,它必须是实际的退格字符,而不是^ 后跟H。使用ctrl-v 后跟ctrl-h 将文字附加到命令行。

    $ bsub -I echo "x^H\$LSB_JOBINDEX" "x^H\$LSB_JOBINDEX"
    Job <2686> is submitted to default queue <normal>.
    <<Waiting for dispatch ...>>
    <<Starting on hostA>>
    0 0
    

    EDIT2

    制表符文字也可以。并不是说它好多了。

    $ bsub -I echo "       \$LSB_JOBINDEX" "       \$LSB_JOBINDEX"
    Job <2687> is submitted to default queue <normal>.
    <<Waiting for dispatch ...>>
    <<Starting on hostA>>
    0 0
    

    【讨论】:

    • 感谢迈克尔的回答。我想避免问题中提到的帮助脚本。控制字符 hack 很有趣 :-) 但我想我现在会坚持使用帮助脚本 ;-)
    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多