测试是否需要Linux个环境模块的逻辑
Logic to test whether Linux environment modules are needed
我帮助维护一个 R 包,它自动生成 shell 脚本,以便在远程服务器上使用 Slurm 运行 Rscript
。有一个 submit.sh
脚本的模板,其中填充了用户在 R 函数中提供的参数。然而,某些系统配置了环境模块,因此 shell 脚本在调用 Rscript
之前需要包含行 module load R
。
我可以从 R 中执行一些逻辑来检测是否需要 module load R
以便 module load R
行包含在 shell 脚本中,以是否有必要为条件?
Link到我们R包的源代码:rslurm
submit.sh
的模板:submit.sh.txt
从 shell 脚本中,您可以检查是否定义了 module
shell 函数,然后检查 R
模块是否存在,在这种情况下尝试应该加载这个模块:
type module >/dev/null 2>&1
if [ $? -eq 0 ] && module is-avail R; then
module load R
fi
如果 R
模块已经加载,module load
命令将不执行任何操作。因此,即使 R
模块已经加载,也可以安全使用它。
我帮助维护一个 R 包,它自动生成 shell 脚本,以便在远程服务器上使用 Slurm 运行 Rscript
。有一个 submit.sh
脚本的模板,其中填充了用户在 R 函数中提供的参数。然而,某些系统配置了环境模块,因此 shell 脚本在调用 Rscript
之前需要包含行 module load R
。
我可以从 R 中执行一些逻辑来检测是否需要 module load R
以便 module load R
行包含在 shell 脚本中,以是否有必要为条件?
Link到我们R包的源代码:rslurm
submit.sh
的模板:submit.sh.txt
从 shell 脚本中,您可以检查是否定义了 module
shell 函数,然后检查 R
模块是否存在,在这种情况下尝试应该加载这个模块:
type module >/dev/null 2>&1
if [ $? -eq 0 ] && module is-avail R; then
module load R
fi
如果 R
模块已经加载,module load
命令将不执行任何操作。因此,即使 R
模块已经加载,也可以安全使用它。