【问题标题】:Module load/unload commands in Linux scriptsLinux 脚本中的模块加载/卸载命令
【发布时间】:2019-10-31 03:24:34
【问题描述】:

我经常需要创建包含module loadmodule unload 命令的Linux 脚本。有没有办法在执行module unload 命令之前测试模块是否已经加载?

我需要这样做的原因是,如果我有一个module unload 命令并且有问题的模块尚未加载,那么它将导致错误消息。我想通过测试已经加载的模块来避免这些错误消息,并且只有在这种情况下才卸载它。

【问题讨论】:

  • man modprobe 是你的朋友。
  • 根据您的评论,您似乎不是指Linux内核模块,而是一种不太常用的软件,我猜是:modules.sourceforge.netmpcdf.mpg.de/services/computing/software/modulesedit您的问题并添加此信息.请显示您将手动使用的确切命令以及module list 的输出。
  • 加载和卸载命令是'module load '和'module unload
  • 这是模块列表命令的输出:当前加载的模块文件:1) unix/1.0/b 6) questa/10.2c/a 2) ede/1.0/b 7) slickedit/2015/ a 3) lsf/8.0/a 8) synplifypro/j2014.09sp1/a 4) adobereader/9.4-1/a 9) ise-ds/14.7/a 5) git/2.19.1/a
  • 你能准确的知道你使用的模块版本吗(输入module -V)? module 命令在卸载未加载的模块时不会触发并出错

标签: linux module load environment-modules


【解决方案1】:

Recent versions of the module command (4+) 有一个名为 is-loaded 的新子命令,无论给定模块是否已加载,它都会返回 true 或 false。

因此,要有条件地从 shell 会话中卸载模块,您可以键入:

module is-loaded $MODULENAME && module unload $MODULENAME

【讨论】:

  • 谢谢,这是我一直在寻找的解决方案。可惜我的版本不支持。
【解决方案2】:

假设问题与 Linux 模块无关,而与此软件有关:https://modules.readthedocs.io/en/stable/module.html

grep 模式假定模块名称是module list 输出的第一个单词。当缺少的信息添加到问题中时,这将得到修复。

# example for unloading
MODULENAME=foobar
module list | grep -qw "^$MODULENAME" && module unload "$MODULENAME"
# example for loading
MODULENAME=foobar
module list | grep -qw "^$MODULENAME" || module load "$MODULENAME"

【讨论】:

  • 其实“模块列表”会显示加载的模块列表。我真正想要的是如下内容:if [];然后模块卸载 $MODULENAME fi
猜你喜欢
  • 2011-08-04
  • 2015-12-14
  • 2020-12-31
  • 2015-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-03
  • 2019-10-31
相关资源
最近更新 更多