1we11 2024-03-29 17:02 采纳率: 0%
浏览 110

slurmctld:error: Couldn't find the specified plugin name for cred/munge looking at all files

slurmctld:error: Couldn't find the specified plugin name for cred/munge looking at all files

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-29 17:02
    关注

    引自免费微信小程序:皆我百晓生

    在Slurm中,slurmctld(系统调用终端守护器)试图找到名为cred/munge的指定插件,而该插件未被找到。导致此错误的原因可能是以下几个方面:

    1. Plugin路径未正确设置: 在配置Slurm时,cred/mungeslurmctl命令中的一个选项,需要放在pluginpath环境变量中。如果没有设置正确,或者设置了但是不包含cred/mungeslurmctl将无法找到这个插件。
    export SLURM_PLUGINPATH=/path/to/plugin
    
    1. 插件文件未在正确目录下: 插件通常位于/etc/slurm.conf或相关配置文件中,其中包含了Slurm客户端的所有配置项。如果没有找到对应的插件文件,或者找到的文件与预期的版本或路径不匹配,slurmctl也无法找到它。
    ls /etc/slurm.conf | grep -o 'cred/munge'
    
    1. Slurm CLI目录路径不正确slurmctl需要访问Slurm CLI的目录,即/usr/bin/slurm/bin/slurm,但实际路径可能因用户或系统的安装位置不同而异。确保Slurm CLI路径正确,并且包含了cred/munge选项的命令。

    2. Plugin已被禁用或卸载: 如果在插件列表中找不到cred/munge,可能是因为已经将其移除了或已禁止了使用。通过检查/etc/services文件或运行slurmctl status命令,可以查看是否已有cred/munge的服务监听特定端口。

    grep -o 'cred/munge' /etc/services | awk '{print $5}'
    

    如果是禁用了服务,可以通过sudo systemctl stop cred/munge命令停用。

    1. 安装版本冲突或版本不兼容: 由于插件名可能已改变或缺失,Slurm可能会尝试从新安装或更新插件,而不是从旧版升级到新的。确保最新版本的Slurm与cred/munge的版本兼容,并通过执行slurmctl list plugins命令来确认当前的插件版本。
    slurmctl list plugins
    

    如果上述步骤都无法解决slurmctld无法找到cred/munge的问题,可能是插件本身不存在,或者存在插件名称冲突、版本不兼容等其他问题。在这种情况下,建议检查cred/munge的相关配置文件和注册表信息,以及检查是否有其他已存在的同名插件。同时,如果插件版本已经是最新且已手动添加到Slurm配置文件中,那么这可能是插件本身的错误,应联系其开发人员进行修复。

    在解决此类问题时,具体操作取决于问题的具体情况,包括所使用的系统、安装方式、插件版本和路径、slurmctl命令行参数以及本地的配置文件等。如果您有具体的配置文件路径或命令行参数,请提供这些信息以便更准确地定位问题并提供解决方案。在此基础上,您可以使用以下代码示例作为参考,并根据实际情况进行修改和调整:

    # 检查插件路径是否存在
    if [ ! -d "$SLURM_PLUGINPATH" ]; then
        # 如果不存在,则查找插件名称
        PluginPath=$(find /etc/slurm.conf -name "*cred*munge*" | xargs read plugin)
        
        # 如果找不到插件,输出错误消息并结束执行
        if [ -z "$PluginPath" ]; then
            echo "Could not find the specified plugin name for cred/munge"
            exit 1
        fi
    else
        # 找到了插件路径,加载并检查版本
        PluginVersion=$(cat "$PluginPath" | grep "^cred/munge[^\s]" | sed "s/^cred/munge//")
        
        # 检查插件版本是否匹配目标版本
        if [[ "$PluginVersion" != "$(slurmctl list plugins)" ]]; then
            echo "Plugin version ($PluginVersion) does not match the target version (latest or the specified version)"
            exit 1
        fi
    fi
    
    # 检查插件状态
    if [ ! -e "$PluginPath/services.conf" ]; then
        # 如果插件尚未注册为服务,创建服务配置文件
        touch "$PluginPath/services.conf"
        cat <<EOF > "$PluginPath/services.conf"
    
    [Unit]
    Description=cred/munge plugin service
    After=rcfile
    Environment=PATH=$SLURM_PLUGINPATH:$PATH
    
    [Service]
    Type=forking
    User=$USER
    Group=$GROUP
    ExecStart=/usr/bin/slurm -C /etc/slurm.conf --plugin "$PluginPath" \
            --max-retries=3 --retry-timeout=30 --success-mode=ALWAYS --command ["chmod", "+x", "$PluginPath/service"]
    ExecStop=/usr/bin/schmdt -u $USER -g $GROUP -F /tmp/service.pid -c /etc/slurm.conf -i $PluginPath/services.conf
    EOF
        chmod +x "$PluginPath/services.conf"
    fi
    
    # 配置服务注册信息
    eval $(cat "$PluginPath/services.conf")
    
    # 调试服务启动
    systemctl start "$PluginPath"
    

    这段代码首先检查插件路径是否存在,如果不存在则查找插件名称。然后,根据插件名称查找相应的配置文件,并检查其版本是否与所期望的匹配。如果配置文件不存在,或者插件版本不匹配,脚本会创建并配置相应的服务文件。接下来,脚本创建服务注册信息,并使用schmdt工具调试服务的启动过程。最后,启动服务并验证其正常工作。

    需要注意的是,为了确保插件加载成功,你需要根据实际的Slurm配置和插件路径来正确执行上述步骤。如果服务正在运行或已经启动,您可能需要先停止其以避免资源占用。此外,插件名称可能会因为软件包、插件库或官方文档的不同而有所差异,因此在编写此代码之前,您需要确保插件的真实名称符合Slurm官方文档的规定。

    如果你有任何额外的需要或疑问,欢迎随时向我提问,我会尽力为你提供详细的解答。在任何情况下,如果你发现使用上述代码执行过程中出现错误,也请提供错误日志或相关的错误截图,以便于我能更好地帮助你诊断和解决问题。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 3月29日

悬赏问题

  • ¥15 slaris 系统断电后,重新开机后一直自动重启
  • ¥15 QTableWidget重绘程序崩溃
  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含