当前位置:首页 > 技术 > 正文内容

Linux 环境与硬件状态检测指令指南

访客 技术 2026年10月2日 4

核心组件与发行版标识

在排查兼容性或部署底层驱动前,准确获取内核版本与操作系统发行信息是首要步骤。现代 Linux 系统提供了标准化的查询路径,避免依赖易被修改的登录提示文件。

# 获取内核发行号、编译时间与硬件平台
uname -srv
uname --machine

# 解析标准化发行版配置文件(兼容主流分支)
source /etc/os-release && echo "发行版: $ID | 版本: $VERSION_ID | 代号: $VERSION_CODENAME"

# 针对 RHEL/CentOS 家族的快速校验
test -f /etc/redhat-release && cat /etc/redhat-release

通过 source 加载 /etc/os-release 可直接调用内置环境变量,比纯文本截取更稳定。

网络接口与主机标识

主机名管理与网络拓扑查看已全面转向 iproute2 工具集。传统 ifconfig 因无法正确处理多 IP 绑定及复杂路由,建议逐步弃用。

# 获取静态与瞬态主机名配置
hostnamectl query-hostname

# 过滤回环地址,仅输出全局 IPv4/IPv6
ip -br addr show scope global | awk '{print $1, $3}'

# 查看默认网关与路由跃点数
ip route list default
ip -6 route show default

使用 -br(brief)参数可大幅精简输出,便于在自动化脚本中直接提取接口状态。

处理器架构与系统负载

CPU 拓扑结构与实时负载是性能基线评估的核心。结合静态架构查询与动态负载采样,可快速定位计算瓶颈。

# 提取物理插槽、核心数与超线程状态
lscpu | awk -F: '/^Socket|^Core|^Thread|^CPU\(s\)/ {gsub(/^[ \t]+/, "", $2); print $1": "$2}'

# 动态采样前 5 秒的平均频率波动(单位 GHz)
watch -n 2 "awk '/cpu MHz/ {printf \"%.2f GHz\\n\", \$4/1000; exit}' /proc/cpuinfo"

# 读取运行队列长度与负载均值
awk '{printf "1min: %s | 5min: %s | 15min: %s | 活跃进程: %s\n", $1, $2, $3, $4}' /proc/loadavg

负载阈值需结合逻辑核心数评估:当 loadavg 持续超过 lscpu 输出的 CPU(s) 总数时,表明调度队列已出现积压。

内存分配与交换空间

Linux 的内存管理机制包含大量缓存与缓冲区,直接查看总量易产生误判。应重点关注可用内存估算值与 Swap 交换频率。

# 计算物理内存与 Swap 的实际占用百分比
free -b | awk '/Mem:/ {printf "RAM 占用: %.1f%%\n", ($3/$2)*100} /Swap:/ {if($2>0) printf "Swap 占用: %.1f%%\n", ($3/$2)*100; else print "Swap: 未启用"}'

# 提取内核内存统计关键指标
awk '/MemTotal|MemAvailable|Buffers|^Cached|SwapTotal|SwapFree/ {printf "%-16s %8s %s\n", $1, $2, $3}' /proc/meminfo

MemAvailable 是内核 3.14 后引入的估算字段,已扣除可回收缓存,比 free 列更贴近实际应用可分配容量。

存储设备与文件系统

磁盘排查需区分容量耗尽与 inode 耗尽两种场景。结合块设备树与挂载点统计,可清晰还原存储拓扑。

# 统计实际物理分区使用情况(排除虚拟文件系统)
df -Th -x tmpfs -x devtmpfs -x squashfs

# 检查 inode 消耗比例(适用于海量小文件场景)
df -i | awk 'NR>1 && $5+0 > 80 {print "警告: "$6" inode 使用率 "$5}'

# 输出块设备层级、文件系统类型与 UUID
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID -e 7,11

# 采样磁盘 I/O 吞吐与等待时间(间隔 2 秒,共 3 次)
iostat -dx 2 3 | grep -v "^$"

lsblk 的 -e 参数用于过滤 loop 设备与 RAM 磁盘,使输出更聚焦于物理存储介质。

外部总线与扩展控制器

PCIe 与 USB 总线的设备枚举常用于驱动匹配与硬件故障定位。通过过滤关键字段可快速锁定目标控制器。

# 检索显卡、网卡及其绑定的内核模块
lspci -k | grep -EA3 'VGA|3D|Network|Ethernet'

# 列出 USB 控制器版本与连接设备标识
lsusb -v 2>/dev/null | grep -E 'idVendor|idProduct|bcdUSB' | paste - - -

# 按硬件类别生成结构化摘要
lshw -class disk -class network -short 2>/dev/null

lspci -k 能直接显示设备当前加载的驱动模块,对排查黑屏或断网问题具有直接参考价值。

守护进程与 systemd 单元

现代 Linux 服务生命周期由 systemd 统一接管。通过状态过滤与属性查询,可精准掌握后台服务的运行态与开机策略。

# 筛选已启用且当前处于活跃状态的服务单元
systemctl list-unit-files --state=enabled --type=service | grep -E '\.service'

# 获取指定服务的精确运行状态与子状态
systemctl show sshd.service --property=ActiveState,SubState,MainPID

# 追踪服务最近 5 条标准输出日志
journalctl -u sshd.service --no-pager -n 5 --output=short-precise

结合 systemctl show 与 journalctl 可替代冗长的 status 输出,更适合集成至监控告警管道。

自动化巡检脚本示例

以下脚本采用函数模块化设计,聚合核心指标并格式化输出,可直接部署为定时巡检任务。

#!/usr/bin/env bash
set -euo pipefail

fmt_header() {
    printf "\n\033[1;36m[ %s ]\033[0m\n" "$1"
}

gather_identity() {
    fmt_header "HOST & KERNEL"
    hostnamectl | head -n 3
    printf "Kernel: %s | Arch: %s\n" "$(uname -r)" "$(uname -m)"
}

gather_compute() {
    fmt_header "CPU & MEMORY"
    lscpu | grep -E 'Model name|CPU\(s\):|Thread'
    free -h | awk 'NR==2{printf "RAM Total: %s | Used: %s | Avail: %s\n", $2, $3, $7}'
}

gather_io_net() {
    fmt_header "DISK & NETWORK"
    df -h --total -x tmpfs | tail -n 1 | awk '{printf "Disk Total: %s | Used: %s | Avail: %s\n", $2, $3, $4}'
    ip -br addr show | awk '$3 !~ /127\.0\.0\.1/ && $3 !~ /::1/ {print "Interface:", $1, "IP:", $3}'
}

main() {
    echo "========================================"
    echo "  SYSTEM SNAPSHOT - $(date '+%Y-%m-%d %H:%M')"
    echo "========================================"
    gather_identity
    gather_compute
    gather_io_net
    echo -e "\n========================================"
}

main "$@"

常用指令速查对照

检测维度核心指令应用场景
发行版标识source /etc/os-release跨平台脚本环境适配
内核版本uname -srv模块编译与漏洞核对
CPU 拓扑lscpu并发参数调优基准
内存水位free -b / awkOOM 风险与缓存分析
存储结构lsblk -o / df -Th挂载规划与容量预警
网络接口ip -br addr多网卡路由与 IP 审计
服务状态systemctl show守护进程健康度检查

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。