-
当使用 ollama run xxxx --verbose 命令运行模型时,Ollama 会在每次回答完成后输出一组详细的性能统计信息,这些信息可以帮助理解模型在处理当前任务时的计算效率、资源消耗、瓶颈分析等关键性能指标。示例输出:total duration: 53.816488258s load duration: 17.007831ms prompt eval count: 2048 token(s) prompt eval duration: 1.129753292s prompt eval rate: 1812.79 tokens/s eval count: 1480 token(s) eval duration: 52.632442857s eval rate: 28.12 tokens/s 各项指标详解:total duration: 53.816488258s总处理时间从模型初始化、加载到输入处理、响应生成的整个流程所花费的总时间(单位为秒)用于评估整体延迟,适合对比不同输入或模型之间的性能表现load duration: 17.007831ms模型加载时间Ollama 加载模型(包含计算图、权重、初始化)所需的时间(单位为毫秒)如果之前已加载过该模型,该值可能为 0 或极短prompt eval count: 2048 token(s)Prompt 环境的 tokens 数量表示输入提示(Prompt)在模型上下文窗口中的 token 总数token 数量越多,处理时间、内存占用等通常也会增加prompt eval duration: 1.129753292sPrompt 相关计算耗时模型对 prompt 的 token 进行处理和编码所消耗的时间用于解析用户输入的上下文,预计算状态prompt eval rate: 1812.79 tokens/sPrompt 处理速度prompt eval count / prompt eval duration 的结果该值越高,说明模型处理输入文本越快eval count: 1480 token(s)生成内容的 tokens 数量表示模型在此次响应中生成的内容 token 数量(即输出长度)通常对应回答的字数eval duration: 52.632442857s生成内容的计算时间模型生成每个 token 所花费的总时间评估响应生成效率,判断是否被“卡顿”、“延迟”等性能问题影响eval rate: 28.12 tokens/s生成 token 的速度eval count / eval duration 的结果反映模型生成内容时的速度。该值越低,表示 response 生成越慢总结:指标含义相关性total duration整个流程耗时延迟表现load duration模型加载耗时启动性能prompt eval count输入 tokens 数量上下文大小prompt eval duration输入处理耗时输入解析prompt eval rate输入解析速度Input 处理效率eval count输出 tokens 数量回答长度eval duration生成答案耗时响应生成延迟eval rate生成速度实时性 / 响应效率这些参数可以帮助分析:模型在不同输入下的处理能力优化输入提示的长度或结构判断性能瓶颈(如响应生成慢)比较不同模型或不同版本的性能差异
-
llama-cli -h llama-cli: error while loading shared libraries: libllama.so: cannot open shared object file: No such file or directory这个错误信息表示在运行 llama-cli 可执行文件时,缺少动态链接库 libllama.so,也就是说系统找不到这个 .so 文件。解决方案如下:查找并安装 libllama.so确认是否从源码编译了项目?llama.cpp 项目默认编译后的 libllama.so 是动态库文件。成功编译后,libllama.so 应该会在 llama.cpp/build/bin/ 目录中生成。加载动态库的路径:要让系统找到 libllama.so,需要将其路径加入 LD_LIBRARY_PATH,如:export LD_LIBRARY_PATH=/path/to/your/build:$LD_LIBRARY_PATH 运行 llama-cli:llama-cli -h如果安装到了系统路径(如 `/usr/local/lib`),你也可以使用 `sudo make install` 安装到系统目录。如果不确定 libllama.so 位置可以尝试在整个磁盘中搜索:find / -name "libllama.so" 2>/dev/null # 全盘搜索 检查编译后的路径(如 llama.cpp/build/bin/libllama.so )。补充:永久设置 LD_LIBRARY_PATH如果经常使用这个库文件,可以将其加到 shell 配置文件中(如 ~/.bashrc 或 ~/.zshrc):export LD_LIBRARY_PATH=/path/to/lib:$LD_LIBRARY_PATH 然后运行:source ~/.bashrc # 或 source ~/.zshrc 总结问题解决方式缺少 libllama.so编译源码或指定路径系统未加载 .so设置 LD_LIBRARY_PATH
-
在基于 Debian/Ubuntu 的 Linux 系统中,apt 和 apt-get 都是包管理工具,但两者在设计、功能和用户体验上有一些区别。1.简介apt-get:较早的包管理工具,属于 apt(Advanced Package Tool)套件的一部分。设计目标是稳定性和脚本兼容性,适合自动化任务(如脚本中使用)。apt:在 Ubuntu 16.04 及更高版本中引入,作为 apt-get 的现代化替代品。整合了 apt-get、apt-cache 等工具的功能,提供更友好的交互体验。2. 主要区别特性aptapt-get用户友好性输出更简洁、彩色高亮、进度条输出更详细,适合日志和脚本命令结构整合常用操作(如搜索、安装)需要分开使用 apt-get、apt-cache默认行为自动显示可升级的包数量需手动运行 apt-get upgrade 查看推荐使用场景交互式命令行操作(人工使用)脚本、自动化任务子命令示例install, remove, search, list, upgradeinstall, remove, update, upgrade, purge3. 功能对比(1) 安装软件包apt:sudo apt install package会自动提示需要安装的依赖和总下载大小。apt-get:sudo apt-get install package输出更简洁,适合脚本。(2) 搜索软件包apt 直接整合搜索功能:apt search keywordapt-get 需要借助 apt-cache:apt-cache search keyword(3) 更新软件包列表apt:sudo apt updateapt-get:sudo apt-get update(4) 升级系统apt:sudo apt upgrade # 仅升级已安装的包 sudo apt full-upgrade # 智能解决依赖冲突(类似 `apt-get dist-upgrade`) apt-get:sudo apt-get upgrade # 普通升级 sudo apt-get dist-upgrade # 处理依赖冲突 4. 为什么推荐使用 apt?更直观:apt 的输出更易读(如进度条、颜色标记)。功能整合:无需切换 apt-get 和 apt-cache。现代支持:Ubuntu/Debian 官方推荐日常使用 apt。5. 何时使用 apt-get?脚本中:apt-get 行为更稳定,输出格式一致。低级操作:某些高级选项(如 apt-get purge)在 apt 中没有直接等效命令。6. 示例场景(1) 交互式操作(推荐 apt)sudo apt update && sudo apt upgrade -y sudo apt install build-essential apt search python3(2) 脚本中(推荐 apt-get)#!/bin/bash sudo apt-get update -qq sudo apt-get install -y curl git 总结日常使用选 apt,脚本或自动化任务用 apt-get。
-
在使用GPU云服务器执行项目代码时会遇到Can't find nvmlDeviceGetNvLinkRemoteDeviceType: /home/opt/gpuproxy/lib64/libnvidia-ml.so.1: undefined symbol: nvmlDeviceGetNvLinkRemoteDeviceType这个错误通常是由于PyTorch在尝试调用NVIDIA管理库(NVML)中的某个函数时,发现该函数不可用或未定义。具体来说,错误信息指出nvmlDeviceGetNvLinkRemoteDeviceType这个符号未定义,系统中安装的NVML库版本可能不支持这个函数,或者库文件本身有问题。可能的原因和解决方法:NVML库版本不匹配:nvmlDeviceGetNvLinkRemoteDeviceType 是NVML库中的一个较新函数,可能在你使用的NVML库版本中不存在。解决方法:确保你安装了NVIDIA驱动版本匹配的NVML库。可以尝试更新NVIDIA驱动和CUDA工具包到最新版本。库文件损坏或不完整:如果libnvidia-ml.so.1文件损坏或不完整,可能会导致某些符号未定义。解决方法:重新安装NVIDIA驱动和CUDA工具包,确保所有库文件完整且未损坏。环境变量问题:如果你有多个版本的NVIDIA驱动或CUDA安装,可能会导致环境变量指向错误的库文件。解决方法:检查你的LD_LIBRARY_PATH环境变量,确保它指向正确的库路径。你可以通过以下命令查看当前的环境变量设置:echo $LD_LIBRARY_PATH 如果路径不正确,可以手动设置:export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH PyTorch与CUDA版本不兼容:你使用的PyTorch版本可能与当前安装的CUDA版本不兼容。解决方法:检查PyTorch和CUDA的版本兼容性,并根据需要升级或降级PyTorch或CUDA。系统更新问题:如果你的系统最近进行了更新,可能会导致某些库文件被覆盖或删除。解决方法:重新安装NVIDIA驱动和CUDA工具包,确保所有依赖项都正确安装。具体步骤:检查NVIDIA驱动和CUDA版本:nvidia-smi nvcc --version更新NVIDIA驱动和CUDA:访问NVIDIA官网下载并安装最新的驱动和CUDA工具包。重新安装PyTorch:使用与CUDA版本匹配的PyTorch安装命令重新安装PyTorch。例如:pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126检查环境变量:确保LD_LIBRARY_PATH指向正确的库路径。重启系统:在完成上述步骤后,重启系统以确保所有更改生效。
-
要查看 Ubuntu 系统的版本,可以使用以下几种方法:方法 1: 使用 lsb_release 命令lsb_release -a这将显示类似以下的输出:No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 20.04.6 LTS Release: 20.04 Codename: focal方法 2: 使用 /etc/os-release 文件cat /etc/os-release这将显示类似以下的输出:NAME="Ubuntu" VERSION="20.04.6 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04.6 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal方法 3: 使用 hostnamectl 命令hostnamectl这将显示类似以下的输出: Static hostname: ubuntu Icon name: computer-vm Chassis: vm Machine ID: 1234567890abcdef1234567890abcdef Boot ID: 1234567890abcdef1234567890abcdef Virtualization: kvm Operating System: Ubuntu 20.04.6 LTS Kernel: Linux 5.4.0-190-generic Architecture: x86-64 方法 4: 使用 uname 命令(查看内核版本)uname -r这将显示类似以下的输出:5.4.0-190-generi方法 5: 使用 cat /etc/issue 文件cat /etc/issue这将显示类似以下的输出:Ubuntu 20.04.6 LTS \n \l总结查看 Ubuntu 系统版本的常用方法中,lsb_release -a 是最直接且信息最完整的命令。运行后会显示系统发行商、版本号、版本描述以及代号,例如 “Ubuntu 22.04.3 LTS (Jammy Jellyfish)”,非常适合用户快速了解当前系统的基本情况。该命令的输出结构清晰,对于普通用户以及系统管理员而言都十分友好,是日常操作中常用的工具之一。另一种方式是查看 /etc/os-release 文件,该文件通过键值对的形式记录系统的版本和发行信息,比如 NAME、VERSION_ID、VERSION_CODENAME 等。这种方式输出的格式更适合程序或脚本使用,可以自动化读取信息并进行判断,例如在部署脚本中判断当前系统版本,以决定兼容性的设置或安装方式。hostnamectl 命令不仅能查看系统版本,还能显示主机名、操作系统类型、内核版本、系统运行时间等信息。在容器或虚拟化环境中,这个命令特别实用,能够全面展示系统当前状态,常用于排查和维护。使用 hostnamectl 能确保获取到与实际运行一致的系统信息,尤其适用于多系统或复杂部署的环境。如果仅需要查看当前运行的 Linux 内核版本,可以使用 uname -r。该命令输出的是类似 “5.15.0-67-generic” 这样的信息,表示当前使用的内核版本,但并不展示完整的 Ubuntu 操作系统版本。这个命令对判断硬件兼容性、驱动版本支持等非常重要,比较适合开发或调试场景使用。对于快速查看系统的基本信息,可以通过 cat /etc/issue 命令,它会显示简短的系统版本描述,如 “Ubuntu 20.04 LTS \n \l”,格式清晰直观,适合临时检查或远程连接时快速查看系统环境。每种方法都有其适用的场景和特点,可以根据具体需求选择最适合的方式。其中,lsb_release 和 /etc/os-release 提供的信息最标准、最准确,是获取操作系统版本信息的首选方式,尤其适用于需要精确版本匹配的系统管理任务。
-
curl 的 --resolve 参数用于强制将指定的域名和端口解析到指定的 IP 地址。这个功能对测试、开发、本地调试非常有用。语法:curl --resolve <host:port:ip> <URL> 参数说明:<host>:域名,例如 example.com<port>:端口号,通常是 80(HTTP)或 443(HTTPS)<ip>:你想解析该域名到的 IP 地址<URL>:你要访问的目标地址示例:示例 1:将 example.com:80 解析到本地curl --resolve example.com:80:127.0.0.1 http://example.com示例 2:多个 --resolve 混用curl --resolve api.local.com:80:192.168.1.100 \ --resolve web.local.com:443:192.168.1.101 \ https://web.local.com示例 3:HTTPS 结合 --insecure 不验证证书curl --resolve example.com:443:192.168.1.100 --insecure https://example.com使用场景:本地测试时临时将域名指向本机或测试服务器绕过 DNS 问题快速测试 IPv4/IPv6用于开发环境重定向流量到特定 IP注意事项:不会更改系统 hosts 文件或 DNS 设置每次 curl 命令都需要显式指定支持 HTTP、HTTPS 等多种协议兼容 IPv4 和 IPv6 的地址格式
-
aria2c 是一个轻量级的多协议、多来源下载工具,支持 HTTP、HTTPS、FTP、BitTorrent 和 Metalink。如--user-agent 参数可以设置下载请求中使用的 User-Agent 字符串,常用于隐藏下载客户端的默认标识,模拟浏览器行为,或绕过某些网站的限制。1. 基本用法用于设置自定义的 User-Agent 字符串:aria2c --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" URL将 User-Agent 设置成现代浏览器的样式,可以避免服务器识别为下载工具并进行限制。2. 结合 cookies 模拟登录下载可以和 --load-cookies 一起使用,模拟登录后的浏览器行为:aria2c --user-agent="Mozilla/5.0 ..." --load-cookies="cookies.txt" URL适用于需要登录才能访问的资源。3. 设置全局 User-Agent可以将默认的 User-Agent 写入配置文件 ~/.aria2/aria2.conf:user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36 这样每次使用 aria2c 时都会使用设置好的 User-Agent。4. 伪装成移动设备或不同浏览器通过设置不同的 User-Agent,可以模拟手机、Android 或其他浏览器行为。模拟 iPhone:aria2c --user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148" URL模拟 Android:aria2c --user-agent="Mozilla/5.0 (Linux; Android 12; SM-S906U) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Mobile Safari/537.36" URL模拟 Firefox:aria2c --user-agent="Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Firefox/102.0" URL5. 联用 --header可以配合 --header 设置更多 HTTP 请求头,如 Referer、Accept-Language 等,实现更完整的浏览器伪装:aria2c \ --user-agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36" \ --header="Accept-Language: en-US,en;q=0.9" \ --header="Referer: https://example.com" \ URL6. 调试 User-Agent 发送情况可以通过以下方式查看实际发送的 User-Agent:aria2c --debug --user-agent="MyCustomUA" --log=debug.log URL也可以通过查看日志文件,确认请求头是否正确发送。总结项目说明--user-agent用于设置自定义 User-Agent 字符串配合 --load-cookies可进行带身份信息的下载.aria2 配置文件可设置全局 User-Agent--header可设置更多浏览器请求头,与 --user-agent 配合使用--debug用于调试请求头是否发送正确
-
ARG DEBIAN_FRONTEND 是在 Dockerfile 中使用的语句。基本含义ARG DEBIAN_FRONTEND 这句话的作用是声明一个构建时的构建参数(build-time argument),名为 DEBIAN_FRONTEND。DEBIAN_FRONTEND 用途详解DEBIAN_FRONTEND 是一个环境变量,用于在 Debian 或其衍生系统(如 Ubuntu)中控制安装包时的前端(GUI 交互方式)。在 Docker 容器中安装 Debian/Ubuntu 系统包时,常常会遇到这样的问题:比如安装 tzdata 或 locales 时,会弹出交互式界面,要求用户提供地理位置、时区等信息。这在 Docker 构建镜像时是 非常不友好的,因为自动构建过程中不能手动输入。常见值值说明noninteractive无交互模式,任何提示都会采用默认值或自动处理dialog用字符菜单界面(图形界面)交互(不推荐在 Docker 中使用)newt使用基于文本的图形界面(类似 dialog,但不同)readline提供简单的命令行交互whiptail类似 dialog,但设计更简单(用于嵌入式系统)典型用法在 Dockerfile 中,我们经常用:ARG DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND noninteractive这样做的目的是:声明一个构建时的参数,仅在 Docker 镜像构建过程中生效。 ARG DEBIAN_FRONTEND=noninteractive设置环境变量 ENV DEBIAN_FRONTEND noninteractive保证在后续运行 apt-get install 等命令时,不会弹出交互式提示框,导致 Docker 镜像构建失败。示例 DockerfileFROM ubuntu:latest # 设置非交互式安装模式 ARG DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=${DEBIAN_FRONTEND} # 更新软件包列表并安装 tzdata (通常会提示用户) RUN apt-get update && \ apt-get install -y tzdata && \ apt-get clean # 恢复交互模式(可选) # ENV DEBIAN_FRONTEND= 使用注意仅影响 apt 类软件包管理器的交互性行为不是所有的 Debian 软件包都会使用该变量常见的相关的软件包软件包是否需要交互说明tzdata是安装时常提示选择时区locales是设置本地语言环境时需要选择小知识:tzdata 交互问题示例# 在一个没有设置 DEBIAN_FRONTEND 的 Ubuntu 容器里运行: apt-get update && apt-get install -y tzdata # 会弹出交互式界面让你选择时区,此时 Docker build 会卡住,无法自动完成 总结关键点说明ARG 声明的是构建参数构建时可用,构建后不会保留在镜像中ENV 是设置环境变量会写入到镜像中,后续容器启动时生效DEBIAN_FRONTEND=noninteractive防止安装包过程中的交互最常用在 apt 安装软件的 Dockerfile 中如果你在实际的 Dockerfile 中看到这句话:ARG DEBIAN_FRONTEND 它通常意味着开发者希望在未来某个构建阶段,允许通过 --build-arg 设置 DEBIAN_FRONTEND 的值(而不是固定为 noninteractive)。比如:docker build --build-arg DEBIAN_FRONTEND=noninteractive -t myimage .
-
使用服务器的时候出现下面警告WARNING: The script xxxxx is installed in '/home/service/.local/bin' which is not on PATH.Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.这条警告信息的意思是:你使用 pip 安装了一个名为 xxxxx 的 Python 包,它包含了一些可执行脚本(例如命令行工具),这些脚本被安装到了目录 /home/service/.local/bin 中。但这个目录不在你的系统环境变量 PATH 中,所以你在终端中直接运行这些脚本时,系统可能找不到它们。更详细解释xxxxx 是一个可执行命令:安装后会生成一些可以在终端运行的脚本文件(比如 xxxxx` 命令)。安装路径为 /home/service/.local/bin:这是用户本地安装的默认路径(通常通过 pip install --user 或者当前用户权限安装产生的路径)。未加入 PATH 环境变量:这意味着你不能在任意位置直接输入 xxxxx 来运行它,除非你手动进入该目录或者加上完整路径。解决方法方法一:将该路径添加到 PATH 环境变量中(推荐)你可以将 /home/service/.local/bin 添加到你的 PATH 中,这样就可以在任何地方运行 xxxxx 命令了。操作步骤:打开你的 shell 配置文件,通常是:Bash 用户:~/.bashrcZsh 用户:~/.zshrc在文件末尾添加一行:export PATH="/home/service/.local/bin:$PATH" 保存文件并生效更改:source ~/.bashrc # 或 source ~/.zshrc 验证是否成功:echo $PATH 总结如果你不确定自己用的是哪个 shell,可以用 echo $SHELL 查看。有些 Linux 系统默认不会把 .local/bin 加入 PATH,这就是为什么你会看到这个警告。
-
一、判断系统使用的是 init 还是 systemd先判断你的系统使用的是哪一种初始化系统:ps -p 1 -o comm=如果输出是 systemd:说明你使用的是 modern Linux 发行版。如果输出是 init:说明你使用的是旧式的 SysV init 系统。二、查看当前运行级别 / 模式对于 systemd 系统(主流)1. 查看当前“目标”(类似 runlevel 的概念)systemctl get-default常见输出:multi-user.target ➜ 类似 runlevel 3(命令行多用户)graphical.target ➜ 类似 runlevel 5(图形界面)2. 查看当前运行的目标(所有激活的目标)systemctl list-units --type=target这会列出所有当前处于活动状态的 target,其中带 [active] 标记的就是当前运行的模式。3. 查看当前运行级别的兼容性信息(通过 runlevel 命令)runlevel输出格式为:上一次运行级别 当前运行级别例如:N 5表示上次是 N(即未设置),当前运行级别是 5(图形界面)。对于 SysV init 系统(老旧系统)使用命令:runlevel输出示例:N 3表示当前运行在 runlevel 3(多用户命令行模式)。 三、查看和修改默认启动模式(systemd)查看默认启动目标:systemctl get-default设置默认启动为目标(例如切换到图形界面或命令行):sudo systemctl set-default multi-user.target # 设置为命令行模式 sudo systemctl set-default graphical.target # 设置为图形界面模式 四、运行级别与目标对照表Runlevelsystemd Target描述0poweroff.target关机1rescue.target单用户模式(救援模式)2multi-user.target多用户模式(无图形)3multi-user.target完整的多用户 + 网络(CLI)4(custom)用户自定义5graphical.target图形界面6reboot.target重启示例:查看当前运行模式# 查看当前运行的目标(systemd) systemctl list-units --type=target # 查看当前运行级别(兼容 SysV) runlevel # 查看默认启动目标 systemctl get-default
-
如果购买了云服务器并选择了一块数据盘,此数据盘需要格式化如挂载 /dev/vdb 这块磁盘。初始状态还没有分区也没有文件系统。需要按照以下步骤来格式化、创建文件系统并挂载它。步骤 1:查看磁盘是否存在分区运行了 lsblk,可以看到:vdb 254:16 0 10G 0 disk 说明 /dev/vdb 是一个未分区的磁盘。如果你打算使用整个磁盘作为一个分区,可以跳过创建分区表的步骤(但建议创建一个主分区以避免警告)。步骤 2:为 /dev/vdb 创建分区(可选)你可以使用 fdisk 或 parted 来创建分区。例如:sudo fdisk /dev/vdb在交互界面中:输入 n 创建新分区类型选择主分区(primary)分区号选 1起始和结束扇区直接回车(使用全部空间)输入 w 保存并退出之后运行:lsblk应该会看到:vdb 254:16 0 10G 0 disk └─vdb1 254:17 0 10G 0 part步骤 3:创建文件系统(比如 ext4)sudo mkfs.ext4 /dev/vdb1注意:如果之前没有分区而是直接格式化磁盘(如 /dev/vdb),有些系统会报错或提示“没有介质加载”,所以推荐先创建分区。步骤 4:创建挂载点并挂载sudo mkdir /mnt/vdb1 sudo mount /dev/vdb1 /mnt/vdb1步骤 5:查看是否成功挂载df -h | grep vdb或者:lsblk步骤 6:开机自动挂载(可选)编辑 /etc/fstab 文件:sudo blkid /dev/vdb1输出示例:/dev/vdb1: UUID="xxxx-xxxx" TYPE="ext4" 然后添加如下内容到 /etc/fstab:UUID=xxxx-xxxx /mnt/vdb1 ext4 defaults 0 2 总结命令流程(快速版)sudo fdisk /dev/vdb # 创建分区 vdb1 sudo mkfs.ext4 /dev/vdb1 # 格式化为 ext4 sudo mkdir /mnt/vdb1 sudo mount /dev/vdb1 /mnt/vdb1
-
在 Linux 系统中,可以使用 apt(Debian/Ubuntu 系)安装一些工具来查询 DNS 解析情况。以下是几种常用的 DNS 查询工具及其安装和使用方法:1. dig(DNS 查询工具)安装:sudo apt updatesudo apt install dnsutils使用:dig example.comdig example.com @8.8.8.8 # 指定 DNS 服务器查询dig example.com A # 查询 A 记录dig example.com MX # 查询 MX 记录dig example.com +short # 仅显示结果(简洁模式)2. nslookup(DNS 查询工具)安装:(通常已包含在 dnsutils 中)sudo apt install dnsutils使用:nslookup example.comnslookup example.com 8.8.8.8 # 指定 DNS 服务器3. host(简单 DNS 查询)安装:(通常已安装)sudo apt install bind9-host使用:host example.comhost example.com 8.8.8.8 # 指定 DNS 服务器host -t MX example.com # 查询 MX 记录4. drill(类似 dig,支持 DNSSEC)安装:sudo apt install ldnsutils使用:drill example.comdrill example.com @8.8.8.8 # 指定 DNS 服务器drill -T example.com # 测试 DNSSEC 验证5. whois(查询域名注册信息)安装:sudo apt install whois使用:whois example.com6. mtr(网络诊断,含 DNS 解析)安装:sudo apt install mtr使用:mtr --show-ips example.com # 显示 IP 并跟踪路由7. curl(HTTP 请求,可测试 DNS 解析)安装:sudo apt install curl使用:curl -v https://example.com # 查看 DNS 解析过程(在输出中找 "Trying" 行)8. systemd-resolve(查询本地 DNS 缓存)适用于使用 systemd-resolved 的系统(如 Ubuntu 18.04+)查询 DNS 状态:systemd-resolve --status清除 DNS 缓存:sudo systemd-resolve --flush-caches总结工具功能安装命令dig详细 DNS 查询sudo apt install dnsutilsnslookup交互式 DNS 查询同上host简单 DNS 查询sudo apt install bind9-hostdrill支持 DNSSEC 的查询sudo apt install ldnsutilswhois域名注册信息查询sudo apt install whoismtr网络路由 + DNS 解析sudo apt install mtrcurl测试 HTTP 请求的 DNSsudo apt install curl
-
一、使用 dd 测试磁盘写速度dd if=/dev/zero of=/path/to/testfile bs=1G count=2 oflag=direct参数解释:if=/dev/zero:输入文件,生成全0数据。of=/path/to/testfile:输出文件路径,确保选择测试的磁盘位置。bs=1G:每个块的大小为1GB(也可以用 bs=1M 或 bs=512M 调整)。count=2:写入2个块,即1G大小为2GB。oflag=direct:使用直接 I/O(O_DIRECT),跳过文件系统缓存,获得更真实的写入速度。conv=fdatasync(可选):确保数据和元数据都同步写入磁盘。注意:/path/to/testfile 要写在你要测试的磁盘目录中。执行完测试后,记得 rm 删除测试文件。示例输出:39+0 records in 39+0 records out 2048 mb copied, 6.12345 seconds, 334 MB/s二、使用 dd 测试磁盘读速度dd if=/path/to/testfile of=/dev/null bs=1G iflag=direct读取之前生成的测试文件(建议是跳过文件系统缓存的生成方式)。of=/dev/null:将数据丢弃。iflag=direct:同样使用直接 IO。三、清空文件系统缓存(建议在测试前执行,以获得更真实结果)echo 3 > /proc/sys/vm/drop_caches注意需要 root 权限3 的含义是:清空 page cache, dentries(目录缓存), inodes。使用 dd 的注意事项不是基准工具:dd 很粗糙,无法给出准确的 IOPS 或延迟数据。不模拟真实应用性能:实际应用的数据模式和 I/O 方式可能与 dd 不同。推荐:使用 fio 进行更专业的磁盘 I/O 测试fio --name=readtest --ioengine=libaio --iodepth=16 --rw=read --bs=4k --size=2G --numjobs=1 --direct=1 --runtime=60 --time_basedfio 是专业的 I/O 基准测试工具,可以模拟更接近实际应用的读写模式(如随机读写、顺序读写等)。安装 fiosudo apt install fio # Debian/Ubuntu sudo yum install fio # CentOS/RHEL 示例:对比不同块大小性能# 测试写速度(4KB块) dd if=/dev/zero of=testfile bs=4k count=100000 oflag=direct # 测试写速度(1MB块) dd if=/dev/zero of=testfile bs=1M count=100 oflag=direct总结命令用途备注dd if=/dev/zero of=...测试磁盘写速度加上 oflag=direct 更准确dd if=... of=/dev/null测试磁盘读速度加上 iflag=direct 更准确echo 3 > /proc/sys/vm/drop_caches清空 Linux 缓存测试前建议执行fio更专业的磁盘性能测试推荐代替 dd 用于详细测试
-
mcp协议如今越来越火热,如MCP与地图工具的深度融合,大家有使用过类似服务吗?
-
在STM32项目中连接多个传感器时,供电异常是常见问题,可能由电源功率不足、噪声干扰、接地不良或电压不匹配导致。以下是系统的供电策略与模块推荐,涵盖设计原则、电路优化和选型建议:一、供电异常的常见原因电源功率不足:总电流超过电源输出能力(如电池或LDO)。电压不匹配:传感器工作电压与STM32(3.3V)不一致(如5V传感器)。电源噪声:传感器开关或电机驱动引入噪声,干扰MCU信号。接地不良:多设备接地路径不一致,导致地电位差和干扰。浪涌电流:传感器启动时瞬态电流拉低电源电压。二、供电策略与解决方案1. 分层级供电设计层级策略适用场景主电源使用高功率DC-DC或LDO提供3.3V给STM32和低功耗传感器。传感器总电流 ≤ 1A隔离电源为高噪声传感器(如电机驱动)单独供电,通过磁珠或共模扼流圈隔离。传感器含开关电源或电机线性稳压对噪声敏感的传感器(如ADC输入)使用LDO(如AMS1117-3.3)单独供电。模拟信号传感器2. 电源模块推荐需求推荐模块优势高功率输出LM2596 DC-DC降压模块(最大3A)支持宽输入电压(4.5-36V),稳压效果好低噪声LDOMCP1703T-3302E(3.3V/250mA)低噪声(1μVrms),适合模拟传感器电池供电TP4056锂电池充电模块 + 升压芯片(MT3608)支持3.7V锂电池,可升压至5V多路隔离输出TPS65133(多通道DC-DC)3路独立输出,支持±1%精度3. 电路优化技巧电源去耦:在传感器电源引脚附近放置100nF陶瓷电容 + 10μF钽电容(并联),滤除高频和低频噪声。动态功耗管理:对非实时传感器(如温湿度)使用睡眠模式,通过STM32的PWR_EnterSTOPMode降低待机电流。热插拔保护:对可更换传感器接口增加PPTC自恢复保险丝(如Bourns MF-MSMF050)和TVS二极管(如SMAJ33A)。星型接地:所有传感器地线直接连接到STM32的GND引脚,避免环路电流。三、典型场景解决方案场景1:多传感器电流超载问题:10个传感器总电流达1.5A,3.3V LDO发热严重。方案:主电源改用LM2596模块(5V输入→3.3V/3A输出)。对高功耗传感器(如超声波)单独供电,通过MOSFET控制上电时序。场景2:模拟信号受干扰问题:STM32 ADC读取压力传感器数据抖动。方案:为压力传感器使用AMS1117-3.3 LDO单独供电。在传感器信号线上串联22Ω电阻并并联100nF电容(RC低通滤波)。场景3:电池供电电压跌落问题:锂电池电量低时(3.0V),STM32复位。方案:增加升压芯片(如MT3608)将电池电压升压至3.3V。设置STM32的PVD(可编程电压检测器),在2.8V时进入低功耗模式。四、关键元器件选型表类型推荐型号参数用途LDOMCP1703T-3302E3.3V/250mA,压差1.2V模拟传感器供电DC-DCLM2596S-ADJ输入4.5-36V,输出1.23-37V主电源模块滤波电容TDK C5750X7R2A106M230KB10μF,X7R陶瓷,25V电源去耦保险丝Bourns MF-MSMF050500mA PPTC,快速熔断过流保护电压监控APX813L2.5V阈值,低功耗复位IC电池欠压检测五、调试与验证方法电流测量:使用万用表或电流探头监测各传感器工作时的电流,确认总功耗。噪声测试:示波器观察传感器电源引脚纹波(应<50mVpp)。热成像检测:用红外热像仪定位发热元件(如LDO或MOSFET),优化散热设计。逐步上电法:逐个接入传感器,定位导致异常的模块。六、进阶设计建议电源路径监控:使用MAX809等复位芯片,在电源异常时触发STM32复位。冗余供电:对关键传感器(如火焰报警)增加超级电容备份。数字控制:通过GPIO控制传感器的使能引脚(如EN信号),实现软件电源管理。通过合理规划电源层级、选择合适模块并优化电路设计,可有效解决多传感器供电异常问题。若仍有不稳定现象,建议优先排查电源噪声和接地回路设计。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签