/proc 是核心向使用者空間暴露資訊的虛擬檔案系統,透過它可即時查看硬體、核心參數、進程狀態,並動態調整部分核心行為。
/proc 關鍵檔案與查詢指令
| 檔案/指令 | 用途 | 範例輸出 |
/proc/version | 核心版本、GCC 編譯器 | Linux version 5.15.0-91-generic... |
/proc/cpuinfo | CPU 型號、核心數、快取、Flags | model name : Intel Xeon E5-2680 |
/proc/meminfo | 記憶體詳細統計 | MemTotal: 32GB, MemAvailable: 28GB |
/proc/loadavg | 1/5/15 分鐘負載、執行緒數 | 0.52 0.48 0.45 2/456 12345 |
/proc/net/dev | 網路介面收發統計 | eth0: 1.2GB/850MB |
/proc/mounts | 目前掛載點清單 | /dev/sda2 / ext4 rw,relatime 0 0 |
/proc/sys/ | 核心參數可讀寫(sysctl) | net.ipv4.ip_forward = 1 |
進程目錄 /proc/[PID]/ 核心檔案
cmdline:啟動命令列(以 null 分隔)
environ:環境變數
fd/:開啟的檔案描述符符號連結
status:狀態、UID/GID、VmRSS、Threads、SigQ
limits:資源限制(RLIMIT_NOFILE、RLIMIT_NPROC...)
io:I/O 統計(rchar、wchar、syscr、syscw)
smaps:記憶體映射詳細佔用(PSS、Swap、Referenced)
stack:用戶堆疊(需 root 或同 UID)
日誌系統與常見日誌檔案
| 檔案 | 記錄內容 | 分析工具 |
| /var/log/syslog / messages | 系統核心訊息、服務啟動 | journalctl, grep, awk |
| /var/log/auth.log / secure | 認證授權、SSH 登入、sudo | last, lastb, aureport |
| /var/log/kern.log | 核心專用日誌 | dmesg -T |
| /var/log/dmesg | 開機核心環形緩衝區 | dmesg -H |
| /var/log/apt/ 或 yum.log | 套件管理操作 | grep install/upgrade |
| /var/log/nginx/access.log | Web 存取日誌 | goaccess, awstats |
進程控制與信號機制
常用信號對照
| 信號 | 編號 | 預設動作 | 典型用途 |
| SIGHUP | 1 | 終止 | 重讀配置(nginx -s reload) |
| SIGINT | 2 | 終止 | Ctrl+C 中斷前景程式 |
| SIGQUIT | 3 | 核心傾印 | Ctrl+\ 強制結束並產生 core |
| SIGKILL | 9 | 立即終止 | 不可捕捉/忽略,最後手段 |
| SIGTERM | 15 | 終止 | 優雅關閉,可捕捉清理資源 |
| SIGCHLD | 17 | 忽略 | 子進程結束通知父進程 |
| SIGSTOP | 19 | 暫停 | 不可捕捉,Ctrl+Z |
| SIGCONT | 18 | 繼續 | 恢復被暫停進程 |
進程管理實戰指令
# 查看進程樹
pstree -p | head -30
# 依 CPU/記憶體排序
top -o %CPU
htop # 互動式,支援滑鼠、樹狀、過濾
# 發送信號
kill -TERM 1234 # 優雅關閉
kill -KILL 1234 # 強制殺死
kill -HUP $(cat /var/run/nginx.pid) # 重載 nginx
# 追蹤系統呼叫
strace -p 1234 -f -e trace=network,file
# 限制資源
prlimit --pid 1234 --nofile=65535:65535
核心參數動態調整
# 臨時生效
sysctl -w net.core.somaxconn=65535
echo 1 > /proc/sys/net/ipv4/ip_forward
# 永久生效
echo "net.core.somaxconn = 65535" >> /etc/sysctl.d/99-custom.conf
sysctl --system
善用 /proc 檔案系統與信號機制,配合 top/htop、strace、perf 等工具,可構建完整的 Linux 進程觀測與控制體系。