slurm脚本给出“命令未找到”

时间:2015-05-03 20:56:02

标签: linux bash shell cluster-computing slurm

我正在尝试将一个脚本提交到在输入文件上运行m4的slurm。 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

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

1 个答案:

答案 0 :(得分:0)

我能够在交互式会话中登录计算节点。实际上,节点&usr / bin与前节点明显不同,并且未安装m4。

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

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