入力ファイルで 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
そして、ここに私のスラームスクリプトがあります:
#!/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
しかし、これもうまくいきませんでした(同じ結果)。誰でもここで助けることができますか?