繁体   English   中英

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

[英]Module load/unload commands in Linux scripts

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

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

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

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

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

假设问题与 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"

好的,我认为Bodo 的答案很接近,但这很棘手,因为至少我的模块命令会打印到错误输出,但我认为加载模块的好的解决方案是:

function LoadModule()
{
    if module list 2>&1| grep -qw $1; then
        echo "Module $1 already loaded."
    else
        echo "Loading module $1."
        module load $1
    fi
}

function UnloadModule()
{
    if module list 2>&1| grep -qw $1; then
        echo "Unloading module $1."
        module unload $1
    else
        echo "Module $1 is not loaded."
    fi
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM