博客 / 詳情

返回

如何檢查CentOS版本:5種方法

下面給出 5 種可靠方法檢查 CentOS 版本,覆蓋 CentOS 6/7/8 與 CentOS Stream。所有命令均為可複製即用,並在每段後給出解釋。✅


方法一:讀取標準文件 /etc/os-release首選

cat /etc/os-release

解釋/etc/os-release 是 systemd 生態的統一規範文件,會顯示 NAMEVERSION_IDPRETTY_NAME 等關鍵信息。優點是通用腳本友好
要點:生產腳本可用 source /etc/os-release && echo $NAME $VERSION_ID 做機讀。<span style="color:red">優先級最高</span>。🎯


方法二:讀取傳統發行文件(兼容舊版)

# 任一存在即用(不同版本路徑可能不同)
cat /etc/centos-release
cat /etc/redhat-release

解釋:在較舊的 CentOS(如 6/7)或兼容的 RHEL 繫上,發行信息集中在上述文件。若找不到 /etc/os-release優先嚐試這兩項
要點:輸出通常包含 “CentOS Linux release X.Y” 等字樣,<span style="color:red">適配老環境</span>。🧩


方法三:用 hostnamectl(systemd 系列)

hostnamectl

解釋hostnamectl 會展示主機信息,其中 Operating System 一行即為發行版本。需 systemd 環境(CentOS 7/8/Stream 常見)。
要點:不止版本,還能順便看到內核、架構。<span style="color:red">直觀</span>。🖥️


方法四:通過 RPM 查詢發行包(可機讀)

# 查詢發行版元包(不同版本可能是以下其一)
rpm -q centos-release
rpm -q redhat-release
rpm -q rocky-release  # 遷移到 Rocky 的機器也可這樣查

解釋:發行版版本通常由一個 “release” 包提供(如 centos-release)。rpm -q 可直接得出版本號,適合腳本和合規審計
要點:也可 rpm -qi centos-release 查看更詳細信息。<span style="color:red">適合批量/自動化</span>。🤖


方法五:lsb_release(需額外組件)

# 首次使用需安裝
sudo yum install -y redhat-lsb-core  # CentOS 7
# 或 dnf install -y redhat-lsb-core  # CentOS 8/Stream
lsb_release -a

解釋lsb_release 是 LSB 接口,輸出 Distributor IDReleaseCodename。在跨發行版腳本中很常見。
要點:如未預裝需先安裝 redhat-lsb-core。<span style="color:red">通用但可能需裝包</span>。📦


對比與選擇(vditor/Markdown 表格)

方法 命令/文件 是否需裝包 機讀友好 適用範圍 備註
方法一 /etc/os-release ⭐⭐⭐⭐ CentOS 7/8/Stream <span style="color:red">官方規範,首選</span>
方法二 /etc/{centos,redhat}-release ⭐⭐⭐ CentOS 6/7/8 舊版兼容性強
方法三 hostnamectl ⭐⭐⭐ CentOS 7/8/Stream 需 systemd
方法四 rpm -q *-release ⭐⭐⭐⭐ CentOS 6/7/8/Stream <span style="color:red">適合審計與批量</span>
方法五 lsb_release -a ⭐⭐⭐ CentOS 7/8/Stream 跨發行腳本常用

一鍵機讀示例(腳本化場景)

# 優先使用 os-release,否則回退到 redhat/centos-release
if [ -f /etc/os-release ]; then
  . /etc/os-release
  echo "${NAME} ${VERSION_ID}"
elif [ -f /etc/centos-release ]; then
  cat /etc/centos-release
elif [ -f /etc/redhat-release ]; then
  cat /etc/redhat-release
else
  rpm -q centos-release 2>/dev/null || rpm -q redhat-release 2>/dev/null || echo "Unknown"
fi

解釋

  • 第 1 段:source /etc/os-release 後直接輸出 <名稱> <版本號>,<span style="color:red">標準可靠</span>。
  • 第 2/3 段:回退讀取傳統文件,保證舊系統可用。
  • 第 4 段:用 rpm -q 兜底,儘可能識別。
  • 最後一行:仍失敗則返回 “Unknown”。🛡️

診斷流程圖(vditor/Markdown|Mermaid)

flowchart TD
A[開始] --> B{存在 /etc/os-release?}
B -->|是| C[讀取並輸出 NAME/VERSION_ID]
B -->|否| D{存在 /etc/centos-release 或 /etc/redhat-release?}
D -->|是| E[cat 對應文件輸出版本]
D -->|否| F{systemd 可用?}
F -->|是| G[hostnamectl 查看 Operating System]
F -->|否| H[rpm -q centos-release/redhat-release]
H --> I{成功?}
I -->|是| J[輸出版本]
I -->|否| K[提示 Unknown/需人工確認]
C --> L[結束]
E --> L
G --> L
J --> L
K --> L

補充説明與最新注意事項

  • <span style="color:red">CentOS Linux 已不再作為 RHEL 的下游長期穩定發行,官方重心轉向 CentOS Stream</span>;很多環境已遷移到 RHEL rebuild(如 Rocky、Alma)或直接使用 Stream。
  • 不要混淆uname -r內核版本,<span style="color:red">不是發行版版本</span>;只能輔助判斷內核與架構,不代表系統發行版本。
  • 批量資產盤點時,建議優先方法一/四並記錄到 CMDB,避免人工解析不一致。📊

小結

在自動化與可靠性優先的場景中,<span style="color:red">先查 /etc/os-release,再回退到傳統 release 文件,必要時用 hostnamectl/rpm 兜底</span>;跨發行腳本可加 lsb_release 作為補充。這 5 種方法互為補位,能覆蓋絕大多數線上環境。🚀

user avatar codingdgsun 頭像 lmxdawn 頭像
2 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.