Linux 脚本中的模块加载/卸载命令
Posted
技术标签:
【中文标题】Linux 脚本中的模块加载/卸载命令【英文标题】:Module load/unload commands in Linux scripts 【发布时间】:2019-10-31 03:24:34 【问题描述】:我经常需要创建包含module load
和module unload
命令的Linux 脚本。有没有办法在执行module unload
命令之前测试模块是否已经加载?
我需要这样做的原因是,如果我有一个module unload
命令并且有问题的模块尚未加载,那么它将导致错误消息。我想通过测试已经加载的模块来避免这些错误消息,并且只有在这种情况下才卸载它。
【问题讨论】:
man modprobe
是你的朋友。
根据您的评论,您似乎不是指Linux内核模块,而是一种不太常用的软件,我猜是:modules.sourceforge.net,mpcdf.mpg.de/services/computing/software/modules请edit您的问题并添加此信息.请显示您将手动使用的确切命令以及module list
的输出。
加载和卸载命令是'module load module -V
)? module
命令在卸载未加载的模块时不会触发并出错
【参考方案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以上是关于Linux 脚本中的模块加载/卸载命令的主要内容,如果未能解决你的问题,请参考以下文章