部署用于学术研究的 Linux 服务器

最近,我将一台 MiniPC 改造为一台基于 Ubuntu 操作系统的服务器,配置它以满足未来研究的潜在需求。

鉴于我对 Linux 的了解有限,我花了一些时间学习并尝试完成部署,并记录配置步骤、可能出现的问题及其相应的解决方案。


在 Ubuntu 上创建具有管理员权限的新用户

当使用云服务、供应商提供或者自己配置的 Ubuntu 服务器时,会创建一个默认用户(default User)。通常,这个用户可以通过sudo命令临时提升权限来执行需要管理员权限的任务,但它本质上仍是一个普通用户(不是管理员账户)。如果需要创建一个拥有相同管理员权限的自定义用户,可以按照以下步骤进行:

1. 创建新用户并指定主目录、登录 shell

sudo useradd -d "/home/<user_name>" -m -s "/bin/bash" <user_name>

参数说明:

  • -d "/home/<user_name>":设置用户的主目录为 /home/<user_name>
  • -m:自动创建主目录。
  • -s "/bin/bash":指定用户的默认登录 shell 为 /bin/bash

2. 赋予新用户管理员权限

要创建具有 sudo(管理员)权限的用户,运行以下命令:

sudo useradd -d "/home/<user_name>" -m -s "/bin/bash" -G sudo <user_name>

其中:

  • -G sudo:将 <user_name> 添加到 sudo 用户组,使其具有管理员权限。

3. 设置新用户的密码

新创建的用户默认没有密码。通过以下命令为 <user_name> 设置密码:

sudo passwd <user_name>

运行此命令后,系统将提示输入两次密码。注意,出于安全考虑,在输入密码时不会有任何字符显示(不显示文本或提示符号)。只需输入密码并按 Enter 确认。

通过以上步骤,可以成功创建一个新用户 <user_name>,该用户具备管理员权限,可以使用 sudo 执行命令。


终端命令美化

好看好用的终端提示符可以增加工作的愉悦感,这里使用zsh来美化终端,相关操作参考先前记录


启用服务器的远程访问

若要实现从非服务器物理位置远程访问 Ubuntu 服务器,可以通过安装并配置 SSH 服务来实现,并进行必要的防火墙配置。

1. 安装和配置 SSH 服务

如果只需基本的 SSH 访问,安装openssh-server并开启 SSH 服务已足够。然而,在更高安全性需求的环境中,可以进一步优化 SSH 的配置文件/etc/ssh/sshd_config

sudo apt update
sudo apt install openssh-server

在完成安装后,检查 SSH 服务的状态以确认其正常运行:

sudo systemctl status ssh
  • 配置建议

    • 禁用 Root 用户直接登录(推荐):避免直接以 root 身份登录服务器,增加安全性。在 /etc/ssh/sshd_config 中找到 PermitRootLogin 并将其设置为 no

      sudo nano /etc/ssh/sshd_config
      
      PermitRootLogin no
      
    • 限制允许访问的用户:可以通过 AllowUsers 配置项指定允许通过 SSH 登录的用户,进一步强化安全性。

      AllowUsers <user_name>
      
    • 使用非默认端口(可选):将 SSH 端口从默认的 22 改为其他端口,比如 2200。此方法可以减少扫描攻击的可能性,但需同时更新防火墙规则。

      Port 2200
      
    • 启用自动断开空闲连接:为避免未使用的 SSH 会话长期占用资源,可在配置中添加以下行,以设置自动断开空闲连接。

      ClientAliveInterval 300
      ClientAliveCountMax 2
      

更改完成后,重启 SSH 服务以应用配置:

sudo systemctl restart ssh

2. 配置 UFW 防火墙

如启用了 UFW 防火墙,确保开启 SSH 端口,并根据是否更改了端口号进行相应设置。若使用默认的 22 端口,可以直接使用:

sudo ufw allow ssh

若更改了端口号,如设置为 2200,则需要如下命令:

sudo ufw allow 2200/tcp
  • 配置建议:

    • 启用防火墙后,进行状态检查以确保规则正确应用:

      sudo ufw enable
      sudo ufw status
      

3. 验证 SSH 连接

在客户端系统(如 Windows)上测试与服务器的连接。Windows 下推荐使用 PuTTYWindows Terminal 等支持 SSH 协议的终端工具,以确保连接的安全性和稳定性。

要在 Windows 系统上测试与服务器的远程连接,可以使用 telnet 命令(注意:telnet 常用于测试连接,但生产环境中应使用更安全的 SSH 客户端):

telnet <remote_ip> <remote_port>

替换为服务器的 IP 地址, 替换为服务器监听的 SSH 端口(默认是 22)。

4. 修复 .Xauthority 文件权限问题

/home/<user_name>/.Xauthority 文件权限错误可能是因为在非 root 权限下创建了该文件。除了修改用户目录的所有权外,确保相关 SSH 会话目录的权限也正确:

sudo chown <user_name>:<user_name> -R /home/<user_name>

若问题仍然存在,可以试试创建一个新的 .Xauthority 文件:

sudo -u <user_name> touch /home/<user_name>/.Xauthority
sudo chown <user_name>:<user_name> /home/<user_name>/.Xauthority

5. 设置 Fail2Ban(推荐)

为了进一步保护 SSH 服务免受暴力破解攻击,可以安装并配置 fail2ban。该工具会自动检测多次失败的登录尝试,并暂时禁用相应的 IP:

sudo apt install fail2ban

fail2ban 会自动启用 SSH 保护,也可以自定义 /etc/fail2ban/jail.local 文件以调整禁用时间、重试次数等参数:

[sshd]
enabled = true
port = 22
maxretry = 5
bantime = 600

Fail2Ban 将自动识别多次失败的登录尝试并禁用相应 IP,从而进一步保障服务器安全。


配置服务器与 GitHub 的 SSH 连接

以下是将 Ubuntu 服务器与 GitHub 配置为 SSH 连接的详细步骤,确保可以安全地克隆、推送和拉取 GitHub 上的仓库。

1. 安装并验证 Git

首先,安装 Git,并确认安装版本:

sudo apt install git
git --version

2. 配置 Git 用户信息

使用 GitHub 用户名和电子邮箱配置 Git。确保填写与 GitHub 账户一致的信息,以便在提交代码时正确记录作者身份:

git config --global user.name "<github_account_name>"
git config --global user.email "<github_account_email>"

以上配置会添加到 ~/.gitconfig 文件中,是全局设置,即应用于该用户下所有 Git 仓库。

3. 生成 SSH 密钥对

为了在服务器上与 GitHub 建立安全连接,需要生成 SSH 密钥对:

ssh-keygen -C "<github_account_email>" -t rsa
  • 说明:
    • -C "<github_account_email>":为密钥添加注释,一般是 GitHub 账户的邮箱地址。
    • -t rsa:指定密钥类型为 RSA(GitHub 支持的常用类型)。

运行命令后,按 Enter 三次(即保持默认文件名 id_rsa 和默认无密码的设置),密钥对会存储在 ~/.ssh 目录中。

4. 添加 SSH 公钥到 GitHub

  1. 使用以下命令打开生成的公钥文件,并复制其中的内容:

    cat ~/.ssh/id_rsa.pub
    

    此命令会将公钥打印在终端上,可以选择性地使用文本编辑器打开并复制(例如使用 vim ~/.ssh/id_rsa.pub)。

  2. 登录 GitHub 网站并导航到 SettingsSSH and GPG keysNew SSH key

  3. id_rsa.pub 中的内容粘贴到 New SSH key 页面,并为此密钥设置一个描述性的名称(如 Ubuntu Server Key),然后保存。

5. 测试与 GitHub 的 SSH 连接

配置完成后,通过以下命令测试与 GitHub 的连接:

ssh -T git@github.com

执行该命令时,GitHub 会返回一条信息确认连接成功,例如:

Hi <github_account_name>! You've successfully authenticated, but GitHub does not provide shell access.

此信息表明 SSH 连接已成功建立,可以在服务器上与 GitHub 进行代码的推送和拉取操作。

6. 常见问题和解决方法

  1. SSH 密钥权限问题:确保 SSH 密钥对文件的权限正确,以防连接问题。检查和设置密钥的权限:

    chmod 600 ~/.ssh/id_rsa
    chmod 644 ~/.ssh/id_rsa.pub
    
  2. 添加密钥到 SSH Agent(推荐):若密钥在服务器启动后未自动加载,可以将其添加到 SSH Agent,以便每次重启后自动加载:

    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_rsa
    

Python 环境配置与管理


Miniforge

在服务器上管理 Python Scientific 环境,我选择轻量、高效的 Miniforge 作为包管理工具,代替 Anaconda。Miniforge 默认配置 conda-forge 频道并集成了 Mamba,为包管理提供了更快的解决方案。下面是安装和配置 Miniforge 以及创建和删除环境的步骤。

1. 安装 Miniforge

首先,按照 MiniforgeGitHub 项目页面 中的安装说明进行下载和安装。以下是核心安装命令:

wget "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh"
bash Miniforge3-$(uname)-$(uname -m).sh
  • 配置建议:

    • 建议将 Miniforge 安装在 /usr/local/miniforge3,这样可以让多个用户共享环境,但只有 root 用户可以进行修改。安装过程中,可以选择安装目录,系统会自动创建所需文件夹。
    • 如果使用 ZSH,应确认 Miniforge 的路径被添加到.zshrc文件中。

      export PATH="$usr/local/miniforge3/bin:$PATH"
      
    • 重新加载.zshrc配置:source ~/.zshrc

2. 初始化 Mamba 环境

安装完成后,初始化 Mamba 以便在终端使用该命令。假设 Miniforge 安装在 /usr/local/miniforge3,执行以下命令:

/usr/local/miniforge3/bin/mamba init

此命令将初始化环境变量,需要重新启动终端以应用更改

若使用 ZSH 无法,可以将.bashrc中的mamba配置复制到.zshrc,或者其他方式配置。

3. 创建和管理环境

在多用户服务器环境中,建议使用 root 权限(通过 sudo su 切换)创建和管理环境。这种方式可以避免普通用户意外或不受控地更改环境配置。

创建新环境
# 以指定名称创建新环境
mamba create --name <new_env_name> python=3.11 --no-default-packages
  • --name <new_env_name>:为新环境命名。
  • python=3.11:设置 Python 版本为 3.11。
  • --no-default-packages:仅安装 Python,不自动安装其他包。
  • 普通用户可以在其主目录中创建私有环境(例如 /home/username/myenv),执行如下命令:
mamba create --prefix /home/username/myenv python=3.11 --no-default-packages
删除环境

若要删除某个环境(包括所有关联的包),可以使用以下命令:

# 通过环境名称删除
mamba remove --name <env_name> --all
# 通过路径删除
mamba remove --prefix /path/to/directory --all

4. 安装常用包

通常建议不直接修改 base 环境,而是根据实际需求创建专门环境。例如,可能需要安装 JupyterHub,它为多个用户提供 Jupyter notebook 服务。

# 创建 Machine Learning 环境
mamba create --name ml_env python=3.12 jupyterhub jupyterlab notebook notebook scipy numpy numpy
# 激活环境
mamba activate ml_env
# 下载其他包
mamba install jupyter-lsp-python jupyterlab-lsp jupyterlab-git jupyterlab_execute_time

5. 防止未经授权的更新

在多用户环境中,限制普通用户修改系统级环境有助于保持环境的稳定性。如果用户试图更新环境,将会遇到权限不足的错误。示例如下:

mamba update --all

错误信息:

EnvironmentNotWritableError: The current user does not have write permissions to the target environment.
  environment location: /usr/local/miniforge3
  uid: 1000
  gid: 1000

这种设计可以确保环境的安全和一致性,避免因权限问题导致更新失败。

如果需要临时给权限更新base环境,可以用sudo命令:

sudo /usr/local/miniforge3/bin/mamba update --all

Poetry

Poetry 是一种高效、便捷的 Python 项目依赖管理工具,适用于快速创建和管理虚拟环境、安装依赖库以及发布 Python 包。

1. 安装 Poetry

在安装 Poetry 前,应确保已安装 Python 3.7 以上版本。

  1. 使用官方安装脚本:

    Poetry 的安装脚本可以自动将 Poetry 安装在 $HOME/.local/bin 目录下。运行以下命令下载并执行安装脚本:

    curl -sSL https://install.python-poetry.org | python3 -
    
  2. 将 Poetry 添加到 PATH:

    默认安装完成后,需要将 Poetry 添加到环境变量中。如果出现 command not found 错误,可以通过以下命令将其添加到当前会话的环境变量中:

    export PATH="$HOME/.local/bin:$PATH"
    
  3. 验证安装:

    安装完成后,可以通过以下命令检查安装版本,确认安装是否成功:

    poetry --version
    

2. 创建新项目

Poetry 提供了简化的命令来快速生成新项目的基本结构。

  1. 创建新项目:

    使用以下命令创建新项目目录(例如 my_project),并生成默认的 pyproject.toml 文件。

    poetry new my_project
    

    该命令将在项目目录中生成以下结构:

    my_project/
    ├── my_project/
    │   └── __init__.py
    ├── pyproject.toml
    └── tests/
        └── __init__.py
    
  2. 初始化现有项目(可选):

    如果已存在项目并希望使用 Poetry 进行管理,可以通过 poetry init 初始化该项目。此命令将引导生成 pyproject.toml 文件,并配置初始依赖项:

    cd existing_project
    poetry init
    

3. 管理项目依赖

Poetry 提供了便捷的依赖管理方式,区分了生产依赖和开发依赖。

  1. 添加生产依赖

    将依赖项添加到生产环境,例如 requests 库:

    poetry add requests
    
  2. 添加开发依赖

    如果某些库仅用于开发和测试环境,可以使用 --dev 参数。此参数将依赖项添加到 [tool.poetry.dev-dependencies] 部分。例如,添加 pytest 作为开发依赖:

    poetry add pytest --dev
    
  3. 安装所有依赖

    项目依赖项写入 pyproject.toml 文件后,可以使用以下命令安装所有依赖:

    poetry install
    

    poetry install 会自动创建虚拟环境,并在虚拟环境中安装所需依赖。如果已存在 poetry.lock 文件,它将确保安装的依赖版本与锁定文件中的版本一致,以保证环境一致性。


4. 管理虚拟环境

Poetry 在项目目录外创建虚拟环境,并自动激活和使用该虚拟环境。

  1. 激活虚拟环境

    可以通过以下命令激活 Poetry 创建的虚拟环境:

    poetry shell
    
  2. 退出虚拟环境

    在虚拟环境中工作结束后,输入 exit 即可退出。

  3. 查看虚拟环境路径

    若需查看虚拟环境的实际存储路径,可以使用:

    poetry env info --path
    
  4. 删除虚拟环境(可选):

    如果需要重新创建虚拟环境或清理环境,可以删除虚拟环境:

    poetry env remove python
    

5. 管理依赖锁定文件

Poetry 使用 poetry.lock 文件锁定依赖的确切版本,以保证跨环境的一致性。

  1. 更新依赖版本

    当需要更新依赖版本时,可以使用以下命令重新解析依赖项并更新锁定文件:

    poetry update
    
  2. 安装指定的锁定版本

    在协作项目中,团队成员可以基于 poetry.lock 文件安装项目的精确依赖项版本:

    poetry install
    

6. 运行脚本和命令

Poetry 支持直接在虚拟环境中运行脚本或命令,简化了命令管理。

  1. 运行项目脚本

    使用 poetry run 在虚拟环境中执行命令。例如,执行 Python 脚本:

    poetry run python script.py
    
  2. 直接运行单元测试

    可以在虚拟环境中直接运行测试命令,如 pytest

    poetry run pytest
    

7. 发布 Python 包

Poetry 可以将项目发布到 PyPI 或其他自定义包仓库。

  1. 构建项目

    Poetry 提供了一键构建项目的功能,将项目打包为 .whl.tar.gz 文件,准备发布:

    poetry build
    
  2. 发布到 PyPI

    将包发布到 PyPI,需要在 ~/.pypirc 文件中配置 PyPI 凭据,或使用 Poetry 的 publish 命令交互输入:

    poetry publish --build
    

    注意:要在测试环境中验证发布过程,可以使用 --repository 参数发布到 PyPI 测试仓库。

    poetry publish --repository testpypi
    

以下是针对计量经济学领域使用 R 环境的配置指南,包括安装 R 和 RStudio、常用的 R 包配置等。


在 Ubuntu 上配置 R 环境用于计量经济学分析

在计量经济学领域,R 适合处理经济数据、执行回归分析、时间序列分析等任务。

1. 安装 R

Ubuntu 默认的软件仓库包含 R,但可能不是最新版本。为了获取最新的 R 版本,可以使用 CRAN 仓库。

  1. 添加 CRAN 仓库

    更新软件包列表并安装必要的依赖项:

    sudo apt update
    sudo apt install software-properties-common dirmngr -y
    
  2. 添加 R 项目的 GPG 密钥

    下载并添加 CRAN 的 GPG 公钥,以确保软件包的完整性:

    wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
    
  3. 验证 GPG 密钥(可选):

    验证密钥的指纹(E298A3A825C0D65DFD57CBB651716619E084DAB9):

    gpg --show-keys /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
    
  4. 添加 CRAN 仓库到源列表

    将 CRAN 仓库添加到 apt 源列表中,以确保获取最新版本的 R:

    sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
    
  5. 安装 R 和开发包

    安装最新版本的 R 和开发库:

    sudo apt install r-base r-base-dev -y
    

2. 安装 RStudio

RStudio 是一个功能强大的 IDE,适用于数据分析和可视化。RStudio 的安装过程简单,具体安装步骤可参考 RStudio 官方安装指南

安装步骤

  1. 下载 RStudio Server 的最新版本。
  2. 使用 dpkg 命令进行安装:

    sudo dpkg -i rstudio-server-<version>.deb
    
  3. 检查安装状态:

    sudo systemctl status rstudio-server
    

RStudio Server 安装成功后,可以通过 http://<your-server-ip>:8787 在浏览器中访问。

3. 安装计量经济学相关的 R 包

计量经济学分析通常需要专门的数据处理、回归分析和时间序列分析包。

  1. 安装系统依赖

    安装系统级的开发包,以确保 R 包安装顺利(特别是对一些需要编译的包,如 tidyversedata.table):

    sudo apt-get install build-essential libssl-dev libcurl4-openssl-dev libxml2-dev
    
  2. 安装计量经济学和数据处理包

    启动 R 控制台并安装常用的计量经济学包:

    sudo R
    

    在 R 控制台中执行以下命令:

    chooseCRANmirror(graphics = FALSE)
    install.packages(c("tidyverse", "data.table", "broom", "plm", "forecast", "lmtest", "sandwich", "stargazer"))
    
    • tidyverse:包含 dplyrggplot2tidyr 等数据处理和可视化包。
    • data.table:用于快速数据处理。
    • broom:将回归分析结果整理成易于分析的表格。
    • plm:用于面板数据回归分析。
    • forecast:用于时间序列预测和分析。
    • lmtestsandwich:提供计量经济学的测试工具和稳健标准误差。
    • stargazer:用于将回归结果输出为易于理解的表格,适合论文或报告。
  3. 安装高级计量经济学工具

    • AER(Applied Econometrics with R):包含用于经济学研究的常用函数和数据集。
    • urca:提供单根和协整检验。
    • vars:用于向量自回归(VAR)分析。
    install.packages(c("AER", "urca", "vars"))
    
  4. 安装金融时间序列分析包(可选):

    • quantmodTTR:用于金融市场数据分析和技术指标计算。
    • zooxts:处理不规则时间序列数据。
    install.packages(c("quantmod", "TTR", "zoo", "xts"))
    

4. 使用 GitHub 令牌安装私有包

如果需要从 GitHub 安装某些实验性或定制的包,建议使用 GitHub 令牌,以免受到 API 速率限制。

生成 GitHub 令牌

  1. 在 R 控制台中生成令牌:

    usethis::create_github_token()
    
  2. 在 GitHub 网站上生成一个新的 Personal Access Token(路径:SettingsDeveloper settingsPersonal access tokenTokens (classic))。

  3. 配置 GitHub 令牌

    将生成的令牌添加到 R 环境中:

    gitcreds::gitcreds_set()
    

在此设置下,可以安全地从 GitHub 安装私有包,避免 API 限制。

5. 示例:安装和使用 plm 包进行面板数据回归

假设要使用面板数据进行回归分析,下面是如何安装 plm 并执行固定效应模型的示例:

  1. 安装 plm(如果未安装):

    install.packages("plm")
    
  2. 加载并使用 plm

    library(plm)
    
    # 创建示例面板数据集
    data("Produc", package = "plm")
    pdata <- pdata.frame(Produc, index = c("state", "year"))
    
    # 固定效应模型回归
    fe_model <- plm(log(gsp) ~ log(pcap) + log(hwy) + log(water) + log(util), data = pdata, model = "within")
    summary(fe_model)
    

    以下是整理优化后的指南,以帮助更有效地同步数据、安装字体、并处理 Nvidia 驱动程序和库的相关问题。


其他问题


1. 同步数据

要将本地数据同步到远程服务器,建议使用 rsync,这是一种高效且可靠的同步方法。更多细节应参考此教程

  • 同步命令

    rsync -r /path/to/sync/ <username>@<remote_host>:<destination_directory>
    

    上述命令会将本地目录 /path/to/sync/ 的所有内容「推送」到远程服务器的 <destination_directory>

  • 监控大文件的传输进度

    如果同步的是较大文件,可以用 watch 命令来监控同步进度:

    watch -n <time_interval> du -sh /path/to/large/file
    

    该命令会每隔 <time_interval> 秒刷新一次文件的大小变化。


2. 安装常用字体

Linux 系统默认不带有一些 Windows 中的常用字体(例如 ArialTimes New Roman)。安装这些字体可以改善文档和网站的显示效果,特别是那些依赖这些字体的图形输出。安装 Microsoft TrueType 核心字体包并刷新缓存:

sudo apt install msttcorefonts
rm -rf ~/.cache/matplotlib
  • msttcorefonts 包括多种 Microsoft 字体,如 Arial 和 Times New Roman。
  • 第二个命令删除了 matplotlib 缓存目录,以确保更新后的字体正确加载。

3. 驱动程序/库版本不匹配

在运行 nvidia-smi 时,如果出现以下错误:

Failed to initialize NVML: Driver/library version mismatch

可以参考 Stack Overflow 上的解决方案。简要的步骤如下:

  1. 重启服务器
    某些情况下,重启服务器即可解决问题:

    sudo reboot
    
  2. 卸载并重新安装 Nvidia 驱动程序

    如果重启无效,尝试以下命令清除现有的 Nvidia 驱动程序并重新安装:

    sudo apt purge nvidia* libnvidia*
    sudo ubuntu-drivers install
    sudo reboot
    

4.升级 Nvidia 驱动程序

要升级 Nvidia 驱动程序,可以按照以下步骤进行:

  1. 卸载旧驱动程序

    sudo apt purge *nvidia* -y
    sudo apt remove *nvidia* -y
    sudo rm /etc/apt/sources.list.d/cuda*
    sudo apt autoremove -y && sudo apt autoclean -y
    sudo rm -rf /usr/local/cuda*
    
  2. 查找并安装推荐的驱动程序

    运行以下命令来查找推荐的 Nvidia 驱动程序版本:

    ubuntu-drivers devices
    

    或者通过以下命令安装指定版本(例如 550,根据系统需求调整版本号):

    sudo apt install libnvidia-common-550-server libnvidia-gl-550-server nvidia-driver-550-server -y
    
  3. 重启并检查

    重启服务器并使用 nvidia-smi 检查新驱动是否正常运行:

    sudo reboot now
    

    如果 nvidia-smi 返回以下错误:

    NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
    

    尝试重新安装内核头文件并重启。


5.内核头文件安装和 GCC 配置

如遇到内核头文件或 GCC 版本问题,按以下步骤操作:

  1. 重新安装内核头文件

    sudo apt install --reinstall linux-headers-$(uname -r)
    sudo reboot
    
  2. 更新 GCC 版本

    如果内核头文件安装过程中遇到 GCC 错误,可以升级到 gcc-12

    sudo apt-get install gcc-12
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 12
    

    重新安装内核头文件并重启服务器后,nvidia-smi 应该能够正常工作。




    Enjoy Reading This Article?

    Here are some more articles you might like to read next:

  • Linux 实用配置记录
  • Conda-Pyenv-Poetry 多轨管理 Python 环境
  • 工作环境系统实用配置记录
  • Python 项目中高效管理路径的范式
  • 中文文案排版指南