【问题标题】:How to pass an argument to a job and keep it unchanged in parallel fashion如何将参数传递给作业并以并行方式保持不变
【发布时间】:2015-03-06 08:45:40
【问题描述】:

我正在尝试在不同的目录中执行一系列作业。我想将目录作为输入参数传递给作业。到目前为止,我了解到我可以使用环境变量作为向作业发送参数的一种方式。但问题是由于作业以并行方式运行,因此该变量的最后一个值将用于所有作业。让我们看看我的代码:

for i in "${arr[@]}"
  do
  export dir=$i 
  qsub myBashFile.sh
done

在我的工作中,我使用变量 dir 进行一些操作。我希望每个作业都使用自己的输入参数执行。 编辑:这是我的工作

#!/bin/sh
#
#
#PBS -N Brownie
#PBS -o test.output.txt
#PBS -e test.error.txt
#PBS -l walltime=2:00:00
#PBS -m n
#PBS -V dir
cd $dir
./run_mycode.sh

我知道这是不正确的,但我正在寻找另一种方法来保持 dir 的值不变并且独立地为所有作业提供唯一性。

我还尝试使用 sed 命令修改作业文件中的变量,如下所示:

 sed "s/dir/"'$i'"/g" my_job.sh > alljobs/my_jobNew.sh

但是,dir 并没有放入 $i 的实际值,而是完全更改为 $i,这在 my_job.sh 中没有意义。

【问题讨论】:

    标签: linux bash hpc qsub


    【解决方案1】:

    您是否尝试按照manpage qsub(1) 中的说明将目录作为command_args 传递?那将是:

    for i in "${arr[@]}"
      do
      qsub myBashFile.sh -- "$i"
    done
    

    您应该能够在myBashFile.sh 中以$1 的身份访问它。

    【讨论】:

    • 如果上面的方法不适合你,也许这个related question on StackOverflow可以帮助
    • 我写了一个简单的工作来测试它是否有效,但它没有工作。这是我的简单工作:#!/bin/sh #PBS -N test #PBS -o test.output.txt #PBS -e test.error.txt #PBS -l walltime=00:01:00 #PBS -m n echo $1 我这样称呼它: qsub job_test.sh "hello" 也如你所说: qsub job_test.sh .. "hello"
    • 用法:qsub [-a date_time] [-A account_string] [-b secs] [-c [ none | { 启用 |定期|关机 |深度= |目录= |间隔=}...] [-C 指令前缀] [-d 路径] [-D 路径] [-e 路径] [-h] [-I] [-j oe|eo|n] [-k {oe}] [-l resource_list] [-m n|{abe}] [-M user_list] [-N jobname] [-o path] [-p priority] [-P proxy_user [-J
    • 你写的是..,但应该是--
    • 另外,您查看我评论中的链接了吗?该页面上还有另一个解决方案。
    【解决方案2】:

    我会为此使用 $PBS_O_WORKDIR。将您的提交脚本更改为:

    for i in "${arr[@]}"
      do
      cd /path/to/$i 
      qsub /path/to/myBashFile.sh
    done
    

    在您的工作中,您需要将“cd $dir”更改为“cd $PBS_O_WORKDIR”。

    【讨论】:

    • 感谢您重播。但我想找到一种安全地将参数传递给工作的方法,这是一个简单的示例来定义问题中的问题,但我无法导航到目标文件夹,因为我想将我的二进制文件与我的数据集分开,我的意思是我不想在我的数据文件中复制任何 exe 文件。
    猜你喜欢
    • 2011-09-19
    • 2022-10-07
    • 1970-01-01
    • 2022-10-03
    • 1970-01-01
    • 2021-06-13
    • 2012-03-04
    • 2015-05-06
    • 1970-01-01
    相关资源
    最近更新 更多