Linux 脚本中的模块加载/卸载命令

Posted

技术标签:

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

我经常需要创建包含module loadmodule 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 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 命令在卸载未加载的模块时不会触发并出错 【参考方案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 脚本中的模块加载/卸载命令的主要内容,如果未能解决你的问题,请参考以下文章

linux内核模块中调用shell脚本

001_linux驱动之_驱动的加载和卸载

linux系统下怎么卸载旧的驱动

驱动模块的加载(linux4.1.15)!

驱动模块的加载(linux4.1.15)!

linux操作系统中,加载和删除内核模块的命令是啥。