Featured image of post Linux 基础命令速查:查版本、查公网 IP、查 CPU、SSH 登录

Linux 基础命令速查:查版本、查公网 IP、查 CPU、SSH 登录

2014 时代 Linux 服务器日常排查的 4 类高频命令——系统版本、公网 IP、CPU 信息、SSH 远程登录

一、为什么是 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-toolsnetstat;公网 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 各查一次。

1
cat /etc/os-release

CentOS 输出形如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
NAME="CentOS Linux"
VERSION="7.0 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7.0"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

Debian 输出形如:

1
2
3
4
5
6
PRETTY_NAME="Debian GNU/Linux 7 (wheezy)"
NAME="Debian GNU/Linux"
VERSION_ID="7"
ID=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.debian.org/"

关于截图:原始笔记里附了 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 这种字符串匹配):

1
2
3
4
. /etc/os-release
if [ "$ID" = "centos" ] && [ "${VERSION_ID%%.*}" -ge 7 ]; then
    echo "CentOS 7+,可以放心用 systemctl 管理服务"
fi

三、查公网 IP:curl cip.cc

临时想知道"出口 IP 是什么、归属哪里、用什么运营商",最快一条:

1
curl cip.cc

输出形如:

1
2
3
4
5
6
IP      : 203.0.113.45
地址    : 中国 北京 北京
运营商  : 联通
数据二  : 北京市 | 联通
数据三  : 中国北京北京 | 联通
URL     : http://cip.cc

返回 IP、归属地、运营商三件套,人眼可读。这是一台第三方 HTTP 服务(cip.cc),不是机器本地命令。

同类工具(适合做容灾备份——一个挂了好切另一个):

域名特点
cip.cc国内访问快,中文输出(本文首选)
ifconfig.me海外老牌,2011 上线,英文输出,纯文本
ipinfo.ioJSON 输出,适合脚本里 jq 解析
checkip.dyndns.org老牌 dyndns 提供,HTML 输出要 grep
api.ipify.org极简,只返 IP 一个字段

网络受限时的备用姿势

1
2
3
4
5
6
7
# 极简(只返 IP)
curl -s https://api.ipify.org
# 等价于
curl -s https://ifconfig.me/ip

# JSON(适合脚本)
curl -s https://ipinfo.io/json | jq .ip

注意:如果机器完全没出网(数据库/内网工具机常见),所有这些命令都会超时;这时要看"公网 IP"得去网关/路由器/云厂商控制台查。

四、查 CPU 信息

服务器出问题时,“先看硬件"比"看软件"效率高——CPU 都不知道几核几线程,调优就是瞎调。

4.1 一组核心命令

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 物理 CPU 个数(几颗 CPU)
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l

# 每颗 CPU 的核心数
cat /proc/cpuinfo | grep "cpu cores" | uniq

# 逻辑 CPU 个数(线程数)
grep 'processor' /proc/cpuinfo | sort -u | wc -l
cat /proc/cpuinfo | grep "processor" | wc -l

# CPU 型号
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

# 通过 dmidecode 查详细型号
dmidecode -s processor-version

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 = 1cpu cores = 2processor = 0,1,2,3

为什么是 /proc/cpuinfo 这是 Linux 内核导出的伪文件系统,硬件信息在启动时由内核从 ACPI/BIOS 读到内存里再吐出来——不需要装任何工具dmidecode 走的是另一条路(直接读 DMI/SMBIOS 表),能拿到型号/主频等详细信息,但需要 root 权限。

五、SSH 远程登录与排错

telnet 是 TCP 层面的"能不能通"测试,ssh -v 是协议层面的"为什么连不上"诊断——两条结合用最稳。

1
2
3
4
5
# 1. 先用 telnet 测 TCP 层面能不能到达
telnet internal.example.com 81

# 2. 再用 ssh -v 看 SSH 协议细节(-v = verbose)
ssh -v -p 81 admin@internal.example.com

5.1 两条命令的分工

命令测什么失败时典型表现
telnet host portTCP 三次握手Connection refused(端口没开/服务没起)
Connection timed out(防火墙拦了)
ssh -v -p port user@hostSSH 协议协商 + 认证卡在 debug1: SSH2_MSG_KEXINIT sent(协议不匹配)
Permission denied (publickey)(认证失败)

诊断顺序:先 telnet 测 TCP 通不通,不通就别往下走;通了再 ssh -v 看协议和认证。

5.2 SSH 连不上时的 3 个最常见原因

  1. 防火墙/安全组没放端口(最常见)——telnet 就超时
  2. sshd 没监听该端口——/etc/ssh/sshd_configPort 22 没改、或改了没重启
  3. 公钥没传对位置——~/.ssh/authorized_keys 权限不对(应该是 600,目录是 700)

5.3 -v 看到的关键日志

1
2
3
4
5
6
7
8
debug1: Connecting to internal.example.com [10.x.x.x] port 81.
debug1: Connection established.
debug1: identity file /root/.ssh/id_rsa type 1
debug1: SSH2_MSG_KEXINIT sent          # 协议交换
debug1: SSH2_MSG_KEXINIT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Authentication succeeded (publickey).

中间任意一行卡住/报错都是诊断线索。Authentications that can continue 这一行最关键——列出了服务端愿意接受的认证方式。

六、4 类命令的速查表

类别命令用途
系统版本cat /etc/os-release查发行版与版本号(systemd 时代统一标准)
公网 IPcurl cip.cc查出口 IP + 归属地 + 运营商
CPU 信息cat /proc/cpuinfo | grep "..."物理/逻辑 CPU 数、核心数、型号
SSH 登录ssh -v -p 81 user@host远程登录并 verbose 排错

七、参考与延伸


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 EOLmirror.centos.org 失效;想继续读 os-release 内容正常,但 yum update 必须先换 vault.centos.org

  • 新项目默认:Rocky Linux 9.x / AlmaLinux 9.x / Ubuntu 22.04 / 24.04。/etc/os-releaseID=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
    3
    
    curl -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
    9
    
    lscpu
    # 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):

    1
    
    sudo dmidecode -t processor | head -30
    
  • NUMA 拓扑(多 socket 机器 2024 已是标配):

    1
    2
    
    lscpu | 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 抗量子侧信道):

    1
    
    ssh-keygen -t ed25519 -C "lwd@<your-host>"
    
  • 老 RSA 密钥 2024 仍能用,但服务端 sshd 7.4+ 默认就接受 rsa-sha2-256/512 了,不用特殊配置。

使用 Hugo 构建
主题 StackJimmy 设计