如何更改 slurum 上的工作目录

How to change working directory on slurum

我在一个 slurm 集群上工作,在那里我有 运行 几份工作。我很难在每个目录中一个一个地查看作业。

我可以使用

设法检查作业在哪个目录中运行
scontrol show job JOB_ID

此命令在输出中给出了多行。下面列出了其中的一些

   OverSubscribe=OK Contiguous=0 Licenses=(null) Network=(null)
   Command=/home/astha/vt-st/scf-test/303030/49/qsub.job
   WorkDir=/home/astha/vt-st/scf-test/303030/49
   StdErr=/home/astha/vt-st/scf-test/303030/49/qsub.job.e1205
   StdIn=/dev/null
   StdOut=/home/astha/vt-st/scf-test/303030/49/qsub.job.o1205
   Power=
   MailUser=(null) MailType=NONE

上面输出的WorkDir(这是一个例子,每个作业的路径都会不同)是我要切换到的目录。

然后

cd /home/astha/vt-st/scf-test/303030/49

但是输入这么长的命令让我的手指都哭了。

我已经尝试制作一个小的 python 脚本来打印 scontrol show job

# Try block
try:
    # Take a number
        print("scontrol show job")


# Exception block
except (ValueError):
  # Print error message
  print("Enter a numeric value")

但是我应该如何改进它,以便它接受我给定的输入编号,然后从输出中 grep WorkDir 并更改目录。

非常感谢。

您将无法让 python 脚本轻松更改您当前的工作目录,并且可以像这样在 Bash 中简单地执行此操作:

$ cdjob() { cd $(squeue -h -o%Z -j "") ; }

这将创建一个名为 cdjob 的 Bash 函数,它接受作业 ID 作为参数。您可以使用

检查它是否已正确创建
$ type cdjob
cdjob is a function
cdjob ()
{
    cd $(squeue -h -o%Z -j "")
}

在你 运行 上面的命令之后(你可以把它放在你的启动脚本 .bashrc.bash_profile 如果你想让它在注销后继续存在)你将能够做

$ cdjob 22078365

例如,这会将您带到作业 22078365 的工作目录。你看,我没有尝试解析 scontrol 的输出,而是使用 squeue 的输出格式选项来简单地输出所需的信息。