Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改slurum上的工作目录_Python_Cluster Computing_Slurm_Cd_Pwd - Fatal编程技术网

Python 如何更改slurum上的工作目录

Python 如何更改slurum上的工作目录,python,cluster-computing,slurm,cd,pwd,Python,Cluster Computing,Slurm,Cd,Pwd,我在一个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=/hom

我在一个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(这是一个示例,每个作业的路径都不同)是我要切换的目录

然后

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

我曾经尝试过制作一个小的python脚本来打印scontrolshow作业

# 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 "$1") ; }
这将创建一个名为
cdjob
的Bash函数,该函数接受作业ID作为参数。您可以使用检查它是否正确创建

$ type cdjob
cdjob is a function
cdjob ()
{
    cd $(squeue -h -o%Z -j "$1")
}
运行上述命令后(您可以将其放入启动脚本
.bashrc
.bash\u profile
中,如果您希望它在注销后继续运行),您将能够执行以下操作

$ cdjob 22078365

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

谢谢您,先生,这部分对我有效。它会打印路径(例如“cd/path/of/cd/directory/”,但不会自动更改。哼,是的,对不起,我在那里留下了一个
回音进行测试。我更新了答案
$ cdjob 22078365