無論是編譯安裝軟體、部署資料庫,還是排查相容性問題,確認 Linux 系統是 32 位還是 64 位都是基礎且關鍵的操作。本文整理了多種判斷方法,從標準命令到 Shell 腳本自動化,幫你快速掌握系統架構資訊。

getconf 是 POSIX 標準工具,查詢系統基礎資料類型位寬,結果不受用戶空間工具鏈影響:
# 關鍵指標
getconf LONG_BIT # 輸出 64 表示 64 位內核/用戶空間
getconf WORD_BIT # 輸出 32(歷史原因,即使 64 位系統通常也顯示 32)
原理解析: 64 位 Linux 採用 LP64 模型(long/pointer 64 位,int 32 位),因此LONG_BIT=64是判斷 64 位系統的金標準;WORD_BIT反映機器字長定義,歷史兼容性多為 32。
適用於部署腳本自動識別架構,決定安裝路徑或下載包:
if [ "$(getconf LONG_BIT)" = "64" ]; then
echo "x86_64 架構"
LIB_DIR="/usr/lib64"
else
echo "i386/i686 架構"
LIB_DIR="/usr/lib"
fi
| 命令 | 32 位輸出特徵 | 64 位輸出特徵 |
|---|---|---|
uname -m | i686 / i386 | x86_64 |
uname -a | 含 i686/i386 關鍵字 | 含 x86_64 關鍵字 |
file /bin/ls | ELF 32-bit LSB executable | ELF 64-bit LSB executable |
ls /lib64 | 目錄不存在或為連結 | 存在 64 位庫文件 |
getconf WORD_BIT=32 就認定是 32 位系統。
事實: 64 位系統下 WORD_BIT 通常也回傳 32,請以 LONG_BIT 為準。uname -r 內核版本判斷。uname -m 機器硬體名稱。# 根據架構自動建立正確的庫文件鏈接
if [ "$(getconf LONG_BIT)" = "64" ] && [ "$(getconf WORD_BIT)" = "32" ]; then
ln -sf /usr/local/mysql/lib/libmysqlclient.so /usr/lib64/mysql/
else
ln -sf /usr/local/mysql/lib/libmysqlclient.so /usr/lib/mysql/
fi
掌握 getconf LONG_BIT 為核心、uname -m 為輔的組合拳,能在任何標準 Linux 環境準確識別系統位數。將判斷邏輯封裝為函數庫,可大幅提升自動化部署腳本的健壯性與可移植性。
Ubuntu 安裝 qBittorrent:穩定版與開發版 PPA 選擇指南
VirtualBox 端口映射失敗?Windows 網路堆疊修復指令大全
Linux SSH 免密登录与远程执行 Shell 命令实战
Vim 進階編輯完全指南:set 配置、.vimrc 管理、外部命令整合與縮寫系統
Debian 系統設置程序開機自啟動:systemd、rc.local、SysVinit 三種方式
Ubuntu 安裝遊戲 Battle for Wesnoth (韋諾之戰) 1.12 從源碼編譯完整步驟
Ubuntu 建立虛擬網卡 (IP Alias) 實現單網卡多 IP:修改 /etc/network/interfaces 完整範例