緯育 2026-0415
出自頂極製作所
Linux 系統管理:記憶體、程序與日誌
本系列講座主要介紹 Linux 系統管理中的幾個核心概念與常用指令。內容涵蓋了記憶體管理,包括記憶體交換區(Swap)的原理、建立與監控,以及記憶體壓縮機制;接著深入探討程序管理,如調整執行優先權與工作控制;並詳細說明了 Linux 日誌(Log)系統的架構、查詢工具(如 journalctl)、輪替機制(logrotate)及其與 Windows 事件檢視器的比較。
此外,講座也介紹了如何查詢遠端系統的基本資訊,例如作業系統版本、核心版本等,並比較了 Ubuntu 和 CentOS 在這些指令與輸出上的差異。
系統資訊查詢與效能監控
- 查詢作業系統版本資訊
- 遠端連線到新主機時,首要任務是確認其作業系統類型與版本,因為不同系統(如 CentOS、Ubuntu)存在差異。
- cat /etc/os-release:查看作業系統發行版本資訊,此檔案在現代系統中普遍存在。
- 查詢核心版本 (Kernel Version)
- 核心版本與系統功能、驅動支援及安全性有關。
- uname -a:顯示所有系統資訊,包含核心版本、主機名稱等。
- 可透過 apt (Ubuntu) 或 yum/dnf (CentOS) 檢查並安裝更新的核心版本。
- 查詢 Systemd 版本
- systemctl --version:查詢 systemd 的版本,有助於了解系統功能。
- 檢視系統運行時間與負載
- append 指令(應為 uptime):查看系統開機時長、在線使用者數及系統負載平均值(Load Average)。
- 負載平均值顯示過去1、5、15分鐘的平均負載,以CPU核心數為基準判斷負載強度。
- 檢視磁碟與記憶體使用狀況
- df -h:以易讀格式檢視磁碟使用狀況。
- free -h:以易讀格式檢視記憶體使用狀況。
記憶體管理 (Memory)
- 解讀 free -h 指令輸出
- 判斷記憶體是否充足的關鍵指標是 available(真正可用的記憶體),而非 free(完全未被使用)。
- 系統會盡量利用閒置記憶體作為 Buffer(緩衝區)和 Cache(快取),free 數值低是正常現象。
- 記憶體交換區 (Swap)
- 概念:當實體記憶體(RAM)不足時,系統會將部分資料暫移到硬碟的 Swap 空間,以維持系統運作,避免因記憶體耗盡而崩潰。這類似於 Windows 的虛擬記憶體。
- 影響:頻繁使用 Swap 會導致系統效能顯著下降,因為硬碟讀寫速度遠慢於記憶體。健康的伺服器應盡量避免使用 Swap。
- 大小設定:舊建議為實體記憶體的兩倍,現今因記憶體容量較大,建議設定適量(如 4GB)即可。
- 建立方式:可透過建立獨立的硬碟分割區 (Partition)(速度快)或在檔案系統中建立檔案 (File)(設定方便)來新增 Swap 空間。
- 透過檔案建立 Swap 步驟:
1. dd:建立指定大小的空檔案。 2. chmod 600:設定檔案權限。 3. mkswap:將檔案格式化為 Swap 格式。 4. swapon:立即啟用 Swap 空間。 5. 編輯 /etc/fstab:設定開機自動掛載。
- 記憶體壓縮機制
- Apple 系統為了在較少實體記憶體下運作,記憶體是全部壓縮的。Microsoft 系統也有壓縮,但比例較小。
程序 (Process) 與工作 (Job) 管理
- 系統程序 (Process) 管理
- 系統中運行的服務就是程序,可對其進行查詢、停用、關閉或移除。
- 程序優先權 (Priority)
- 用於控制 CPU 執行程序的順序。拉高優先權可讓 CPU 分配更多時間給該程序,使其更快完成。
- 工作控制 (Job Control)
- 用於管理程序的執行狀態,可暫停、恢復前景或背景工作,讓 CPU 資源得到更有效的利用。
- 離線工作 (Nohup)
- 即使使用者登出終端機,也能讓系統繼續執行特定的工作。
Linux 日誌 (Log) 系統
- 日誌的作用
- 記錄系統與服務的運作狀況,用於排查問題,如服務意外停止或重啟。
- 用於稽查異常登入或大量的網路連線。
- 核心日誌服務
- rsyslogd: 傳統的日誌服務,將日誌儲存在文字檔案中。
- systemd-journald: systemd 內建的日誌服務,日誌可存於記憶體(重開機後消失)或永久儲存在硬碟。
- 可修改 /etc/systemd/journald.conf 設定檔,將日誌永久儲存於 /var/log/journal/。
- 日誌儲存位置與結構
- 日誌通常儲存在 /var/log/ 目錄下。
- Linux 系統日誌 (syslog) 通常遵循標準四欄位格式:發生時間、主機名稱、來源 (服務/進程ID)、訊息內容。
- 常見日誌檔:cron (排程任務)、dmesg (開機與硬體訊息)、secure.log/auth.log (登入驗證)。
- 日誌查詢工具 journalctl
- 用於查詢 systemd-journald 的日誌。
- -u <服務名稱>:查詢特定服務的日誌,如 journalctl -u ssh.service。
- -p <等級>:按嚴重性等級過濾,數字越小越緊急(p3 代表 error 等級)。
- -k:僅顯示核心(kernel)相關的訊息。
- 日誌輪替 (Logrotate)
- 一個獨立服務,用於定期打包、壓縮和歸檔日誌檔案,防止單一檔案過大。
- 主要設定檔在 /etc/logrotate.conf,各服務規則在 /etc/logrotate.d/。
Windows 日誌管理 (事件檢視器)
- 基本結構
- Windows 的日誌管理工具為「事件檢視器」,主要日誌分為「應用程式」、「安全性」、「系統」等類別。
- 與 Linux 的比較
- Windows 日誌訊息更複雜,包含詳細的 XML 數據。
- 由於許多第三方軟體未遵守規範,常將日誌寫入「系統」而非「應用程式」類別,導致訊息混雜,查找不如 Linux 直觀(Linux 將不同服務的日誌拆分成獨立檔案)。
- 查看建議
- 優先關注標示為「錯誤」的事件。
- 可在系統穩定時手動清除日誌,以便問題發生時快速定位新錯誤。