将目录更改为 slurm 脚本运行的位置

将目录更改为 slurm 脚本运行的位置

我正在尝试直接将目录 ( cd) 更改为使用 SLURM 工作负载管理器运行作业的文件夹。

我可以检查 SLURM 脚本在哪里运行

squeue --format %Z% -j 123

现在我也可以提取,目录名称为

echo   $(squeue --format "%Z" -j <jobid>) | awk '{print $2}'

(2021 年 11 月 26 日编辑。) 它确实在终端中显示文件夹名称,例如

/HDD_Drive/myfiles/myfolder

但是当我cd与此结合使用时,我仍然在当前文件夹中。有趣的是,如果我以同样的方式检查进程 PID:

cd "$(pwdx <PID> | awk '{print $2}')"

它确实更改了我的目录,但在检查 SLURM 作业 ID 时,我有这种奇怪的行为。总之:

echo $(squeue --format "%Z" -j jobid ) | awk '{print $2}'

将当前目录显示为

/HDD_Drive/myfiles/myfolder 

cd $(squeue --format "%Z" -j 212 ) | awk '{print $2}'

节目

-bash: cd: too many arguments

cd $(squeue --format "%Z" -j 212 | awk '{print $2}')

我还在当前目录。谢谢你!

答案1

因为您能够提取目录,所以您几乎成功了。现在,您只需使用它作为参数cd

cd $(squeue --format "%Z" | awk '{print $2}')

应该做。命令替换$( ... )将被括号中命令的输出替换。

请注意,这意味着您在尝试中使用的语法不必要地复杂:Since$( cmd )被替换为输出括号中的命令的echo $( cmd )作用与简单调用cmd.

相关内容