/proc 是**虛擬檔案系統 (VFS)**,掛載於記憶體,**不佔用磁碟空間**。它將核心內部數據結構 (進程表、記憶體管理、裝置驅動、網路協議棧等) 以**檔案/目錄**形式暴露給用戶空間,**讀取即觸發核心回調即時生成內容**,實現「零拷貝」核心狀態檢視。
| 路徑 | 內容 | 典型用途 |
|---|---|---|
/proc/cpuinfo | CPU 型號、核心數、旗標、BogoMIPS、快取大小 | grep -c processor /proc/cpuinfo 獲取邏輯核心數 |
/proc/meminfo | 記憶體總量、可用、緩衝/快取、Swap 使用、HugePages | 監控腳本解析 MemAvailable 判斷壓力 |
/proc/version | 核心版本、GCC 版本、編譯時間 | 驗證核心版本 |
/proc/modules | 已載入核心模組 (同 lsmod) | 檢查驅動是否載入 |
/proc/mounts | 目前掛載點 (同 cat /etc/mtab 但更即時) | 腳本檢查掛載狀態 |
/proc/filesystems | 核心支援的檔案系統類型 | 確認 ext4/btrfs/fuse 等支援 |
/proc/interrupts | 每 CPU 中斷計數、類型、驅動名稱 | 定位中斷風暴、IRQ 平衡 |
/proc/stat | CPU 時間片 (user/nice/system/idle/iowait/irq/softirq/steal)、進程統計 | 計算 CPU 使用率 |
/proc/loadavg | 1/5/15 分鐘負載、運行/總進程數、最後 PID | 負載監控 |
/proc/uptime | 系統運行時間 (秒)、閒置時間 (秒) | 計算開機時長 |
/proc/cmdline | 核心啟動參數 | 排查啟動問題 |
/proc/sys/ | **可調核心參數** (對應 sysctl) | 運行時調優 (如 net.ipv4.tcp_fin_timeout) |
/proc/[PID]/每個運行進程對應一個數字命名目錄,關鍵檔案:
| 檔案 | 內容 | 解析工具 |
|---|---|---|
cmdline | 啟動命令列 (以 \0 分隔參數) | cat /proc/1234/cmdline | tr '\0' ' ' |
environ | 環境變數 (以 \0 分隔) | cat /proc/1234/environ | tr '\0' '\n' |
status | 進程狀態 (State, Pid, PPid, Uid/Gid, VmRSS, VmSize, Threads, SigQ...) | grep VmRSS /proc/1234/status |
fd/ | 開啟檔案描述符符號連結 (指向實際檔案/管道/socket) | ls -l /proc/1234/fd/ 追蹤檔案洩漏 |
cwd | 當前工作目錄符號連結 | 定位進程工作目錄 |
exe | 執行檔路徑符號連結 | 識別進程來源 |
maps | 記憶體映射區域 (位址、權限、對應檔案/匿名/堆/棧) | 分析記憶體佈局、找共享庫基址 |
stack | 當前棧內容 (需 root、CONFIG_STACKTRACE) | 無侵入式調試 |
io | I/O 統計 (read/write bytes, syscrs/syscw) | I/O 熱點分析 |
oom_score | OOM Killer 分數 (越高越易被殺) | 調整 oom_score_adj 保護關鍵進程 |
ns/ | Namespace 連結 (ipc, mnt, net, pid, user, uts) | 容器隔離檢查 |
/proc/net/tcp, /proc/net/udp:連線表 (十六進位 IP/埠、狀態、UID、Inode) → ss -tunap 友善顯示。/proc/net/dev:介面流量統計 (bytes/packets/errs/drop/fifo/colls/carrier) → ifconfig/ip -s link 來源。/proc/bus/usb/devices:USB 裝置樹 (舊),新用 /sys/bus/usb/ 或 lsusb -t。#!/bin/bash
echo "=== CPU ==="; grep 'model name' /proc/cpuinfo | head -1 | cut -d: -f2
echo "Cores: $(grep -c ^processor /proc/cpuinfo)"
echo "=== Memory ==="; grep -E 'MemTotal|MemAvailable|SwapTotal|SwapFree' /proc/meminfo
echo "=== Load ==="; cat /proc/loadavg
echo "=== Disk ==="; df -h / | tail -1
echo "=== Top 5 Mem Processes ==="; ps aux --sort=-%mem | head -6
echo "=== Kernel ==="; cat /proc/version
/proc/sys/ 下多數檔案可寫入 (需 root),即時生效:
# 開啟 IP 轉發
echo 1 > /proc/sys/net/ipv4/ip_forward
# 調整 TCP TIME_WAIT 回收
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
# 限制核心最大 PID
echo 65535 > /proc/sys/kernel/pid_max
# 永久生效請寫入 /etc/sysctl.d/99-custom.conf 並執行 sysctl --system
/proc/[PID]/ 預設僅擁有者可讀 (隱藏他人環境變數/命令列)。hidepid= 掛載選項可加強隔離:mount -o remount,hidepid=2 /proc (僅 root 可見所有進程)。/proc 可能被過濾 (如 lxcfs 提供虛擬視圖)。/proc 是核心與用戶空間的「零拷貝」契約界面。熟練掌握 /proc/cpuinfo、/proc/meminfo、/proc/[PID]/ 等核心檔案,能在無任何額外工具情況下完成:系統資源監控、進程深度診斷、核心參數熱調優、容器可見性審計。將其內化為肌肉記憶,是 Linux 運維與開發的核心基本功。
Linux 靜態庫與動態庫深度對比:建立、鏈接、執行機制全解析
SNMP + MRTG 監控 Linux 服務器網絡流量完整實戰:從配置到圖表生成
VMware 虛擬機 Ubuntu 鼠標滾輪失效修復:xorg.conf 配置與 vmmouse 驅動適配
Linux 源碼編譯安裝 Apache + MySQL + PHP5 及主流論壇部署全記錄
Linux 定時任務 crontab 完整教程:crond 守護進程、系統/用戶任務、crontab 指令格式、時間欄位詳解、環境變量
Linux 秒級定位 IO 繁忙進程:vm.block_dump + dmesg + awk 一鍵分析法