微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

测试是否需要Linux环境模块的逻辑

如何解决测试是否需要Linux环境模块的逻辑

我帮助维护一个 R 包,该包自动生成 shell 脚本,以便使用 Slurm 在远程服务器上运行 Rscript。有一个 submit.sh 脚本模板,其中填充了用户在 R 函数中提供的参数。但是,某些系统配置了环境模块,因此在调用 module load R 之前,shell 脚本需要有一行 Rscript

是否有一些我可以从 R 中执行的逻辑来检测 module load R 是否必要,以便将行 module load R 包含在 shell 脚本中,条件是它是否必要?

链接到我们的 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 模块已经加载,使用它也是安全的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。