lsf - 如何在平台 LSF 的 bsub 数组作业参数中使用 LSB_JOBINDEX?
问题描述
我想将LSB_JOBINDEX
to 作为参数传递给我的脚本,而不是使用环境变量。
这使我的脚本更加与 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"
say 的输出bsub2.log
是:
2 $LSB_JOBINDEX $LSB_JOBINDEX $LSB_JOBINDEX $LSB_JOBINDEX
所以在这种情况下,只有第一个$LSB_JOBINDEX
得到了扩展,但没有得到以下任何一个。
但我宁愿不将整个命令作为一个巨大的字符串传递,就像'echo $LSB_JOBINDEX'
本例中的那样。我宁愿像在常规 bash 命令中那样使用单独的参数。
我也尝试过使用,%I
但它仅适用于-o
相关bsub
选项,不适用于命令本身。
在 LSF 10.1.0 中测试。相关文档:https ://www.ibm.com/support/knowledgecenter/en/SSWRJV_10.1.0/lsf_admin/job_array_cl_args.html
解决方案
如果参数以$
. 例如。如果 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 的标准输出上看到作业输出。
编辑
好的。看起来这行得通。但这并不是一个真正的严肃答案,因为它太丑了。问题是如果参数以$
. 所以策略是找到某种方法来确保参数中的第一个字符不是$
. 一种方法是放置除参数的第一个字符以外的任何字符$
。后跟一个退格文字,然后是$
. 请注意,它必须是实际的退格字符,而不是^
后跟H
. 使用ctrl-v
后跟 actrl-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
编辑2
制表符文字也有效。并不是说它好多了。
$ bsub -I echo " \$LSB_JOBINDEX" " \$LSB_JOBINDEX"
Job <2687> is submitted to default queue <normal>.
<<Waiting for dispatch ...>>
<<Starting on hostA>>
0 0
推荐阅读
- hugo - 在 Hugo 中将单个文件拆分为多个“帖子”?
- powerbi - 在 powerBI 中复制 spotfire 查询
- html - 如果我的 html 视频既不是 youtube 链接(例如在这种情况下),也不是我使用 mp4,为什么我的 html 视频不起作用?
- javascript - jquery Validate Casuing Initail 无效元素在第二次“保存”按钮单击时变为有效
- javascript - 音频未在渲染时播放 - React
- algorithm - Levenshtein Word Distance 和 Boyer Moore 搜索算法有什么关系?
- python - 如何构建具有 2 组独立权重和 2 个损失的神经网络?
- django - 如何使用 Dropzone js 在 Django 中上传多个文件?
- python - 使用 Mock 时出现 ModuleNotFoundError
- python - 我想在一个值中使用 get_attribute 但没有“data_value”只是数字,如何使用 selenium python 获取信息?