slurm 脚本给出 "command not found"
slurm script gives "command not found"
我正在尝试提交一个脚本,以便在输入文件中读出 运行s 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" 就好了。
我检查了 read/write/execute 权限。
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
但这也不起作用(结果相同)。
有人可以帮忙吗?
我能够在交互式会话中登录到计算节点。确实那个节点的 /usr/bin 和前面节点的明显不同,而且没有安装 m4.
这也解释了为什么我的 PATH 目录中的符号链接不再有效。它指向 /usr/bin/m4,但是一旦在该计算节点上执行作业,/usr/bin/m4 就不再存在,因此符号链接无效。
如果我想使用 m4,解决方案是要求管理员在计算节点上安装 m4,或者将本地版本的可执行文件复制到我的 PATH 变量中存在的主目录中的某个位置.
我正在尝试提交一个脚本,以便在输入文件中读出 运行s 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
通过
成功提交到 slurmsbatch 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" 就好了。
我检查了 read/write/execute 权限。
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
但这也不起作用(结果相同)。 有人可以帮忙吗?
我能够在交互式会话中登录到计算节点。确实那个节点的 /usr/bin 和前面节点的明显不同,而且没有安装 m4.
这也解释了为什么我的 PATH 目录中的符号链接不再有效。它指向 /usr/bin/m4,但是一旦在该计算节点上执行作业,/usr/bin/m4 就不再存在,因此符号链接无效。
如果我想使用 m4,解决方案是要求管理员在计算节点上安装 m4,或者将本地版本的可执行文件复制到我的 PATH 变量中存在的主目录中的某个位置.