【问题标题】:slurm script gives "command not found"slurm 脚本给出“找不到命令”
【发布时间】:2015-05-03 20:56:01
【问题描述】:

我正在尝试向 slurm 提交一个在输入文件上运行 m4 的脚本。 m4 安装在我们的集群上,如果我自己运行脚本,一切都会按预期工作。但是当我通过 slurm 脚本向 slurm 提交运行时,我得到了一个错误。

这是我要运行的脚本(名为 m4it.sh)。
[请注意,我正在打印 PATH 和 SHELL 以尝试调试。]

#!/usr/bin/env bash

echo "Beginning m4it.sh"
echo "PATH=$PATH"
echo "SHELL=$SHELL"
echo

m4 file.m4 > fileout.txt

这是我的 slurm 脚本:

#!/usr/bin/env bash
#
#SBATCH --job-name=m4it

### Account name (req'd)
#SBATCH --account=MyAccount

### Redirect .o and .e files to the logs dir
#SBATCH -o m4it.out
#SBATCH -e m4it.err
#
#SBATCH --ntasks=1
#SBATCH --time=00:01:00
#SBATCH --mem-per-cpu=125

echo "PATH=$PATH"
echo "SHELL=$SHELL"
echo 
echo "running m4it.sh"
echo
./m4it.sh

通过

成功提交到slurm
sbatch m4it.slurm

当它执行时,我的 m4it.err 日志文件中出现以下错误:

./m4it.sh: line 8: m4: command not found

PATH 和 SHELL 变量(由 m4it.slurm 和 m4it.sh 脚本打印到 m4it.out)是相同的。 PATH 包含我登录时的 PATH,而 SHELL 是 /bin/bash,正如预期的那样。

即使我在 PATH 中的目录中包含指向 m4 可执行文件的符号链接,我仍然会收到此错误。此外,问题不只是 m4。该脚本会将命令“apropos”报告为未知命令,即使它在命令行上运行良好。脚本可以“cd”和“ls”就好了。

我已经检查了读/写/执行权限。

ls -ld / /usr /usr/bin /usr/bin/m4 

产生以下结果:

dr-xr-xr-x. 30 root root   4096 Apr  8 11:11 /
drwxr-xr-x. 14 root root   4096 Feb 17 20:24 /usr
dr-xr-xr-x.  2 root root  36864 Apr 29 11:14 /usr/bin
-rwxr-xr-x   1 root root 212440 Jun  3  2010 /usr/bin/m4

似乎 m4it.sh 脚本在其上执行的节点与前端节点不同,并且没有遇到某种信息(环境变量或路径)。我还尝试使用参数 --export=ALL 导出所有设置,如下所示:

sbatch m4it.slurm --export=ALL

但这也不起作用(结果相同)。 有人可以帮忙吗?

【问题讨论】:

  • which m4 的输出是什么?
  • 在命令行中,“which m4”返回 /usr/bin/m4。我在 .sh 和 .slurm 脚本中都添加了“which m4”。我在 .out 文件中一无所获。在 .err 文件中,它显示“which: no m4 in (/....all the directory in my PATH.../) 奇怪的是 /usr/bin 在我的 PATH 中。目录也是如此我在其中放置了一个指向 m4 的符号链接。
  • 哪个用户运行 m4it.sh?请将ls -ld / /usr /usr/bin /usr/bin/m4 的输出添加到您的问题中。
  • ls 的输出添加到上面的问题中。我不确定谁执行 m4it.sh,但我猜它是解释 m4it.slurm 脚本的 slurm 守护进程。
  • 尝试在作业中运行 ls 命令。运行您的作业的计算节点中似乎没有安装 m4。

标签: linux bash shell cluster-computing slurm


【解决方案1】:

我能够在交互式会话中登录计算节点。确实该节点的 /usr/bin 与前面的节点有很大不同,并且没有安装 m4。

这也解释了为什么我的 PATH 目录中的符号链接不再起作用。它指向 /usr/bin/m4,但是在该计算节点上执行作业后,/usr/bin/m4 不再存在,因此符号链接无效。

如果我想使用 m4,解决方案是要求管理员在计算节点上安装 m4,或者,将可执行文件的本地版本复制到我的主目录中的某个位置,该目录存在于我的 PATH 变量中。

【讨论】:

    猜你喜欢
    • 2020-01-26
    • 2021-05-05
    • 2018-05-16
    • 2015-08-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 2018-01-14
    • 1970-01-01
    相关资源
    最近更新 更多