什么是 Environment Modules?
通常,用户在登录时通过为会话期间要引用的每个应用程序设置环境信息来初始化其环境;Environment Modules包 是一个简化shell初始化的工具,它允许用户在使用 modulefile 进行会话期间轻松地修改环境;
每个 modulefile 包含为应用程序配置shell所需的信息。初始化Modules包后,可以使用modulefiles的module命令在每个模块的基础上修改环境。通常,modulefiles 可以使用module命令更改或设置shell环境变量,如PATH、MANPATH等。modulefile可以由系统上的许多用户共享,用户可以有自己的集合来补充或替换共享的modulefile;
Modules 使用
Modules 使用包括 shell 命令和 modulefile 文件定义两部分内容,下面将分别进行介绍:
Modules 指令
module 安装好后,即可调用 module [command] 来查看或加载模块,主要指令如下:
➜ ~ module avail # 列出当前 module path 中的所有可用模块文件
------------------------------------------ /usr/share/Modules/modulefiles ------------------------------------------
dot module-git module-info modules null use.own
----------------------------------------- /home/lilongxiang/privatemodules -----------------------------------------
cmake/3.8.0
➜ ~ module load cmake/3.8.0 # 加载模块文件/类
➜ ~ module list # 显示已经加载的模块
Currently Loaded Modulefiles:
1) use.own 2) cmake/3.8.0
➜ ~ module unload cmake # 卸载模块文件/类
➜ ~ module list # 显示已经加载的模块
Currently Loaded Modulefiles:
1) use.own
Modules 脚本内容
采用 module load 命令时,可用的模块其实都是安装在 module path 目录下的 modulefile 文件。一个基本 modulefile 内容如下:
#%Module -*- tcl -*-
## This is a module to access something
# 显示 module help 主要内容
proc ModulesHelp { } {
puts stderr "This module sets up access to something"
}
# 显示 module whatis 显示主要内容
module-whatis "sets up access to something"
# module 加载前需要模块类
prereq module_flag
# module 加载冲突模块类
conflict another_module_flag
# 加载其他模块
module load gcc
# 设置环境变量
setenv SOMEVERION 0.95
# 添加环境变量
append-path PATH /home/[user]/[somedir]/bin
append-path MANPATH /home/[user]/[somedir]/man
append-path LD_LIBRARY_PATH /home/[user]/[somedir]/lib
其中包含的设置关键字有以下几个
prereq
指示加载此脚本需要预先加载的模块名,当这些模块没有预先加载时,module load 此模块会报错;conflict
指示与此模块冲突的其他模块类,注意这里不仅可以添加 modulefile 文件名称,也可添加 modulefile 所在路径文件名,此时代表模块和文件内所有模块类都会产生冲突;module load
指示加载此模块同时自动加载的模块,注意其和prereq
命令的不同;setenv
设定环境变量;append-path
添加环境变量;
常用命令
命令 | 作用 |
---|---|
module avail 或 module av | 查看系统中可用的资源 |
module add 或 module load | 加载模块 |
module rm 或 unload | 卸载模块 |
module list 或 module li | 显示已加载模块 |
module purge | 卸载所有模块 |
module show | 显示模块配置文件 |
module swap 或 module switch | 将模块1 替换为 模块2 |
module help | 查看具体软件的信息 |