在Ubuntu系统中执行 `nvidia-smi` 命令时提示“command not found”,是常见的NVIDIA驱动相关问题。该问题通常由未正确安装NVIDIA显卡驱动或CUDA工具包引起,也可能是驱动安装后未加载内核模块或环境变量未配置所致。即使系统已识别GPU硬件(可通过 `lspci | grep -i nvidia` 确认),若未安装官方驱动或使用开源nouveau驱动,`nvidia-smi` 仍不可用。此外,手动编译驱动失败、DKMS未注册或Secure Boot干扰也可能导致命令缺失。需通过官方.run文件或APT方式重新安装适配版本的NVIDIA驱动,并验证`/usr/bin/nvidia-smi`是否存在及内核模块`nvidia`是否正常加载。
1条回答 默认 最新
马迪姐 2025-09-18 00:16关注1. 问题现象与初步诊断
在Ubuntu系统中执行
nvidia-smi命令时提示“command not found”,这是NVIDIA GPU环境部署中的典型问题。该错误表明系统无法找到 NVIDIA 系统管理接口(System Management Interface)工具,通常位于/usr/bin/nvidia-smi路径下。首先应确认GPU硬件是否被系统识别:lspci | grep -i nvidia若输出包含NVIDIA设备信息,则说明PCIe总线已检测到显卡;否则需检查物理连接或BIOS设置。即便硬件可见,仍可能因未安装官方驱动而使用开源的 nouveau 驱动,后者不支持
nvidia-smi。2. 根本原因分类分析
导致
nvidia-smi缺失的原因具有多层性,可归纳为以下几类:- 驱动未安装:未通过官方.run文件或APT包管理器安装NVIDIA专有驱动。
- CUDA Toolkit误装:仅安装CUDA开发套件但未包含底层驱动组件。
- 内核模块未加载:驱动安装失败或DKMS未成功注册,导致
nvidia模块未编译进当前内核。 - Secure Boot干扰:启用安全启动后,第三方内核模块(如NVIDIA驱动)会被阻止加载。
- 环境变量或路径异常:虽然二进制存在,但
PATH未包含其所在目录。 - 驱动版本不兼容:GPU架构与驱动版本不匹配(如Ampere卡使用旧版驱动)。
- 手动编译中断:使用.run脚本安装时被中断,造成部分文件未写入。
- 多驱动冲突:nouveau与nvidia驱动共存引发资源抢占。
3. 深度排查流程图
graph TD A[执行 nvidia-smi 报 command not found] --> B{lspci | grep -i nvidia 是否有输出?} B -- 否 --> C[检查硬件连接/BISO/UEFI设置] B -- 是 --> D{是否禁用 nouveau?} D -- 否 --> E[编辑 /etc/modprobe.d/blacklist-nouveau.conf] D -- 是 --> F{尝试 locate nvidia-smi 是否存在?} F -- 否 --> G[重新安装NVIDIA驱动] F -- 是 --> H[检查 /usr/bin/nvidia-smi 权限与PATH] G --> I[使用 apt 或 .run 安装适配驱动] I --> J{modprobe nvidia 是否成功?} J -- 否 --> K[处理 Secure Boot / DKMS 注册] J -- 是 --> L[nvidia-smi 应可正常运行]4. 解决方案实施步骤
按照由浅入深原则,推荐以下操作序列:
- 确认GPU存在:
lspci | grep -i nvidia - 禁用nouveau驱动:
创建/etc/modprobe.d/blacklist-nouveau.conf内容如下:blacklist nouveau options nouveau modeset=0
随后更新initramfs:sudo update-initramfs -u - 安装适配驱动:
# 方法一:使用Ubuntu官方仓库 sudo ubuntu-drivers autoinstall # 方法二:指定版本安装 sudo apt install nvidia-driver-535 # 方法三:使用NVIDIA官方.run文件 chmod +x NVIDIA-Linux-x86_64-*.run sudo ./NVIDIA-Linux-x86_64-*.run - 验证驱动模块加载:
lsmod | grep nvidia - 检查二进制是否存在:
ls /usr/bin/nvidia-smi - 重启系统并测试命令:
nvidia-smi - 若仍失败,检查Secure Boot状态:
mokutil --sb-state - 必要时禁用Secure Boot或签署驱动模块。
- 查看DKMS状态:
dkms status - 确保内核头文件已安装:
sudo apt install linux-headers-$(uname -r)
5. 验证与监控表
检查项 命令 预期输出 异常处理建议 GPU硬件识别 lspci | grep -i nvidia显示NVIDIA设备型号 检查PCIe插槽、电源、BIOS初始化 nouveau是否禁用 lsmod | grep nouveau无输出 完善blacklist配置并重build initramfs nvidia模块加载 lsmod | grep nvidia显示nvidia及相关模块 手动modprobe或重装驱动 nvidia-smi文件存在 which nvidia-smi/usr/bin/nvidia-smi 重新安装驱动包 DKMS注册状态 dkms status显示nvidia及版本 运行nvidia-installer --update-dkms 本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报