一、为什么是 2014 年这一份
我第一次写"Linux 速查"是 2006 年,那会儿查版本靠 /etc/redhat-release 和 /etc/debian_version 两个发行版自带的小文本,netstat -an 几乎是网络排查的唯一选项。8 年后情况变了:systemd 在 RHEL/CentOS 7(2014-07 发布)上成为默认 init,发行版统一把元数据塞进了 /etc/os-release;iproute2 包的 ss 也开始慢慢取代 net-tools 的 netstat;公网 IP 查询有了 cip.cc、ifconfig.me、ipinfo.io 等多个选择。
这一篇只覆盖 4 类最高频的命令——查版本、查公网 IP、查 CPU、SSH 登录。其他类别(进程、磁盘、网络工具深度用法)单独成文。
阅读建议:本文每个命令块都"可独立复制运行";先收藏,遇到具体场景再回头查对应小节。
二、查看系统版本:/etc/os-release
/etc/os-release 是 systemd 在 2012 年引入的统一标准文件——所有遵循规范的发行版(CentOS 7、Debian 7+、Ubuntu 12.04+、Fedora 19+、Arch 等)都把元数据写在这里。不再需要 cat /etc/redhat-release 后还要 cat /etc/debian_version 各查一次。
| |
CentOS 输出形如:
| |
Debian 输出形如:
| |
关于截图:原始笔记里附了 CentOS / Debian 的
os-release截图对照,本文中以等价文本输出还原。如需在自己机器上对比,直接cat /etc/os-release即可。
几个关键字段:
| 字段 | 含义 | 用途 |
|---|---|---|
NAME | 发行版大写名 | 人类阅读 |
ID | 发行版小写标识 | 脚本判断(shell 中用 . /etc/os-release && echo $ID) |
VERSION_ID | 主版本号 | 脚本判断主版本(适合做 >=7 判定) |
PRETTY_NAME | 完整描述名 | 报错时贴这个最清晰 |
ID_LIKE | 父系/兼容发行版 | 知道"这机器能装哪边的包" |
在脚本里这样用(避免 grep /etc/redhat-release 这种字符串匹配):
| |
三、查公网 IP:curl cip.cc
临时想知道"出口 IP 是什么、归属哪里、用什么运营商",最快一条:
| |
输出形如:
| |
返回 IP、归属地、运营商三件套,人眼可读。这是一台第三方 HTTP 服务(cip.cc),不是机器本地命令。
同类工具(适合做容灾备份——一个挂了好切另一个):
| 域名 | 特点 |
|---|---|
cip.cc | 国内访问快,中文输出(本文首选) |
ifconfig.me | 海外老牌,2011 上线,英文输出,纯文本 |
ipinfo.io | JSON 输出,适合脚本里 jq 解析 |
checkip.dyndns.org | 老牌 dyndns 提供,HTML 输出要 grep |
api.ipify.org | 极简,只返 IP 一个字段 |
网络受限时的备用姿势:
| |
注意:如果机器完全没出网(数据库/内网工具机常见),所有这些命令都会超时;这时要看"公网 IP"得去网关/路由器/云厂商控制台查。
四、查 CPU 信息
服务器出问题时,“先看硬件"比"看软件"效率高——CPU 都不知道几核几线程,调优就是瞎调。
4.1 一组核心命令
| |
4.2 几个数字怎么对
| 名称 | 命令 | 关系 |
|---|---|---|
| 物理 CPU 颗数 | physical id 去重计数 | 一颗 CPU 可能有 4/6/8/… 核 |
| 每颗核心数 | cpu cores(uniq 一行) | Intel 一般物理核 = 核心数;AMD 早期有"模块"概念 |
| 逻辑 CPU 数 | processor 行数 | 开了超线程后 = 核心数 × 2 |
典型云厂商机器输出参考(某云 ECS 通用型):
- 1 颗物理 CPU,2 核心,开了超线程 → 4 个逻辑 CPU
- 命令输出:
physical id = 1,cpu cores = 2,processor = 0,1,2,3
为什么是 /proc/cpuinfo? 这是 Linux 内核导出的伪文件系统,硬件信息在启动时由内核从 ACPI/BIOS 读到内存里再吐出来——不需要装任何工具。dmidecode 走的是另一条路(直接读 DMI/SMBIOS 表),能拿到型号/主频等详细信息,但需要 root 权限。
五、SSH 远程登录与排错
telnet 是 TCP 层面的"能不能通"测试,ssh -v 是协议层面的"为什么连不上"诊断——两条结合用最稳。
| |
5.1 两条命令的分工
| 命令 | 测什么 | 失败时典型表现 |
|---|---|---|
telnet host port | TCP 三次握手 | Connection refused(端口没开/服务没起)Connection timed out(防火墙拦了) |
ssh -v -p port user@host | SSH 协议协商 + 认证 | 卡在 debug1: SSH2_MSG_KEXINIT sent(协议不匹配)Permission denied (publickey)(认证失败) |
诊断顺序:先 telnet 测 TCP 通不通,不通就别往下走;通了再 ssh -v 看协议和认证。
5.2 SSH 连不上时的 3 个最常见原因
- 防火墙/安全组没放端口(最常见)——
telnet就超时 - sshd 没监听该端口——
/etc/ssh/sshd_config里Port 22没改、或改了没重启 - 公钥没传对位置——
~/.ssh/authorized_keys权限不对(应该是 600,目录是 700)
5.3 -v 看到的关键日志
| |
中间任意一行卡住/报错都是诊断线索。Authentications that can continue 这一行最关键——列出了服务端愿意接受的认证方式。
六、4 类命令的速查表
| 类别 | 命令 | 用途 |
|---|---|---|
| 系统版本 | cat /etc/os-release | 查发行版与版本号(systemd 时代统一标准) |
| 公网 IP | curl cip.cc | 查出口 IP + 归属地 + 运营商 |
| CPU 信息 | cat /proc/cpuinfo | grep "..." | 物理/逻辑 CPU 数、核心数、型号 |
| SSH 登录 | ssh -v -p 81 user@host | 远程登录并 verbose 排错 |
七、参考与延伸
- 内部笔记《通用命令》(2014-09-15 节选)
- 深入进程管理:《Linux 进程与服务管理》
- 服务器应急排查:《Linux 性能调试与应急排查》
- 官方规范:systemd
/etc/os-release手册 - 同类公网 IP 查询工具:ifconfig.me · ipinfo.io · api.ipify.org
2024 视角:十年后这 4 条命令的现状
站在 2024 年回望这 4 条命令,部分用法已被新工具替代或默认配置已经变了:
一、查系统版本:/etc/os-release 仍是标准
CentOS 7 在 2024-06-30 进入 ELS 阶段(仅安全更新,无功能更新)。
/etc/os-release仍可读,但VERSION_ID="7"后已经没有新的 minor 版本。CentOS 8 已经 2021-12-31 EOL,
mirror.centos.org失效;想继续读os-release内容正常,但yum update必须先换vault.centos.org。新项目默认:Rocky Linux 9.x / AlmaLinux 9.x / Ubuntu 22.04 / 24.04。
/etc/os-release的ID=rocky/ID=almalinux/ID=ubuntu是判定主版本的最稳字段。脚本里更现代的判定方式:
1 2 3 4 5 6. /etc/os-release case "$ID" in rocky|almalinux|centos|rhel) echo "RHEL 系,dnf 管理" ;; ubuntu|debian) echo "Debian 系,apt 管理" ;; *) echo "其他:$ID $VERSION_ID" ;; esac
二、查公网 IP:HTTPS 是默认
2014 时代还能用的明文 HTTP 服务(
http://cip.cc)在 2024 年很多被劫持或下线,统一改用 HTTPS。推荐使用支持 HTTPS 的查询:
1 2 3curl -s https://api.ipify.org && echo curl -s https://ifconfig.me curl -s https://ipinfo.io/json | jq -r '.ip'国产替代:
curl https://myip.ipip.net(ipip.net 提供的中文输出)。企业批量场景:建议自己起一个内部 IP 查询服务(
curl -s http://10.0.0.1:8080/myip),避免依赖第三方。
三、查 CPU 信息:lscpu 是首选
/proc/cpuinfo仍是最权威的来源,但读起来费劲。2024 主流是lscpu(util-linux 包):1 2 3 4 5 6 7 8 9lscpu # Architecture: x86_64 # CPU(s): 128 # Model name: Intel(R) Xeon(R) Platinum 8338C CPU @ 2.60GHz # CPU MHz: 2600.000 # L1d cache: 32K # L1i cache: 32K # L2 cache: 4096K # L3 cache: 36608K新硬件信息(
dmidecode仍然需要 root):1sudo dmidecode -t processor | head -30NUMA 拓扑(多 socket 机器 2024 已是标配):
1 2lscpu | grep -i numa numactl --hardware
四、SSH 登录:OpenSSH 9.x 的关键变化
OpenSSH 8.3+(2020)默认禁用 SHA1 的 RSA 签名(
ssh-rsa),改用rsa-sha2-256/512。OpenSSH 9.0+(2022)默认禁用
ssh-dss(DSA),所有 DSA 密钥都连不上。OpenSSH 9.6+(2024-03)开始对默认配置加固:例如
PubkeyAcceptedAlgorithms默认禁用 SHA1 主机密钥。2024 推荐生成 ed25519 密钥(比 RSA 短、比 ECDSA 抗量子侧信道):
1ssh-keygen -t ed25519 -C "lwd@<your-host>"老 RSA 密钥 2024 仍能用,但服务端 sshd 7.4+ 默认就接受 rsa-sha2-256/512 了,不用特殊配置。
