如何将作业结果保存到与集群中的job.sh文件相同的文件夹中?

时间:2018-01-27 15:28:34

标签: linux bash directory sh cluster-computing

要在群集中运行作业,我需要提交一个<div class="entry"> <div class="container"> container content </div> <div class="container"> container content </div> <div class="container"> container content </div> <div class="container"> container content </div> <div class="pagination">....</div> </div>文件,其中要设置的参数之一是工作目录var grid; function setup() { createCanvas(800, 800); grid = { x1: width / 10, y1: height / 10, x2: width - grid.x1, y2: height - grid.y1, width: grid.x2 - grid.x1, height: grid.y2 - grid.y1, margin: grid.width / 10, //margin of each lines }; background(255); } function draw() { grid(); DDA(grid.x1, grid.y1, grid.margin, grid.margin); } // ......

我在不同目录中有不同的job.sh个文件。所有#$ -wd /path/to/save/the/result/几乎完全相同,只是我必须将job.sh更改为相应的目录,其中每个job.sh都会找到,因此结果将保存在与/path/to/save/the/result/相同的位置。 1}}。

由于我在不同目录中有很多job.sh文件,因此需要花费大量时间专门定义job.sh

如果我使用job.sh,结果将保存在我启动/path/to/save/the/result/文件的位置,这也不太好。我必须每次都使用#$ -cwd,然后job.sh

那么有没有办法可以用同一个变量替换不同的cd /path/to/save/the/result/,这个变量总是指向qsub job.sh文件的目录?

我当前job.sh的一个例子是:

/path/to/save/the/result/

2 个答案:

答案 0 :(得分:0)

我通常使用 document.getElementById("input").onclick = colorChooser("sth", "yellow"); 来获取脚本所在位置的目录。

然后你可以写current_directory="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"或输出文件应该是什么。

答案 1 :(得分:0)

您可以使用dirname $0获取脚本job.sh的位置。

编辑:

对于OP的job.sh,可以对命令进行分组并将输出写入logfile,如下所示:

$ cat job.sh
#!/bin/bash

scriptDir="$(dirname $0)"

# Group the commands and send the output to a logfile
{
module unload compilers mpi
module load compilers/intel/2015/update2
module load mpi/intel/2015/update3/intel
module load gromacs/5.1.1/intel-2015-update2

gmx mdrun -deffnm md_0_1
} &>> "${scriptDir}/logfilename.log"

运行脚本:

$ qsub /path/to/job.sh

只要群集可以访问路径,就应该创建${scriptDir}/logfilename.log